2012-10-25 15 views
9

Sto costruendo un'applicazione per le note semplici e voglio aggiungere una barra statica nella parte inferiore di TableView. Ad esempio, voglio aggiungere un pulsante di aiuto. Come posso fare questo solo al mio TableView?Come aggiungere una barra degli strumenti a un TableView in iOS

Finora:

Ho aggiunto una barra degli strumenti attraverso storyboard, ma che lo rende bastone alla fine dell'ultima cella tableView fatta. Lo voglio incollato al fondo. Ho inserito il codice per fare programmazione:

@property (strong, nonatomic) IBOutlet UIToolbar *toolbar; 

nel mio file tableViewController.h e

[self.view addSubview:_toolbar]; 
[self.navigationController.view setFrame:self.view.frame]; 

nel mio file tableViewController.m nel mio viewDidLoad metodo

Grazie!

risposta

10

La soluzione migliore è quella di utilizzare UITableViewController un UIViewController invece di un UITableViewController. (Questo è stato detto sopra, ma lascia che ti dia i dettagli).

Creare un nuovo UIViewController con il rispettivo XIB. All'interno della tua nuova vista di UIViewController trascina un UITableView, ridimensionalo e trascina il tuo UIToolbar dove vuoi.

si dovrebbe avere qualcosa di simile:

enter image description here

Il bordo nero rappresenta vista principale del UIViewController. Il bordo rosso rappresenta la vista tabella. Il bordo blu rappresenta la tua barra degli strumenti.

Successivamente, rendere UIViewController conforme a due protocolli: UITableViewDelegate e UITableViewDataSource. Dovrai implementare manualmente i suoi metodi essenziali come cellForRowAtIndexPath, numberOfRowsInSection, ecc., Ma non dovrebbe durare a lungo.

Collega il tuo UITableView al tuo UIViewController. Collega anche le proprietà "data source" e "delegate" al controller della vista.

Avrai la configurazione pronta in meno di 15 minuti.

+0

grazie talmente tanto !! L'avevo capito! –

+0

Buona risposta, penso di si! – why

-1

Prova questo, aggiungerà la barra degli strumenti come footerView della tabella. e assicurati di dare l'altezza del piè di pagina del tavolo come 44 (altezza della barra degli strumenti).

self.tableView.tableFooterView = _toolbar; 
+0

grazie, l'ho provato ma non ha funzionato. Forse ho fatto qualcosa di sbagliato? –

+0

Questo attacca semplicemente la barra degli strumenti sotto tableView non in fondo allo schermo. –

0

Si consiglia di utilizzare ViewController invece di TableViewController

Poi rendere il vostro TableView come IBOutlet nel file di intestazione. Dichiara delegato e origine dati. Sei pronto per andare.

1

Aggiungere una barra degli strumenti tramite i codici è semplice.

UIToolbar *toobar = [[UIToolbar alloc]initWithFrame:frameYouNeed]; 
toobar.barStyle = UIBarStyleBlack; 
[self.view addSubview:toobar]; 

Ma sarebbe meglio se si utilizza UITableView come una visualizzazione secondaria, piuttosto che un

+0

grazie, ma questo sta tirando fuori errori –

+0

proprio come @Leonnears ha detto, rendere la barra degli strumenti e tableView come due subview del tuo viewController – BabyPanda

3

È possibile utilizzare un UITableViewController standard con uno storyboard. In "metriche simulate", vai al menu Barra in basso e seleziona "Barra degli strumenti". Viene visualizzata la barra degli strumenti. È quindi possibile aggiungere elementi pulsante ad esso.

+1

Questa è la risposta corretta. Cosi 'semplice. Ho usato questo metodo per anni. Perché le persone stanno facendo un grande affare con questo? Fornire risposte così contorte! –

6

Ho appena trovato un trucco migliore!

  1. Assicurarsi che c'è nessuna barra di navigazione (dai vostri tentativi falliti)
  2. trascinare e rilasciare un "Bar Button Item" (Xcode magicamente posto per voi in basso)
  3. NOTA: Se esegui l'app ora non vedrai nulla! (In modo da continuare a leggere)
  4. Aggiungere la seguente riga di codice sotto viewDidLoad:

    self.navigationController.toolbarHidden = NO;

Fatto!

+0

nice - se non li vuoi sulle altre viste è appena impostato su false ... ora che usiamo swift – DogCoffee

+0

Nice trick !!. Mi chiedo perché la barra degli strumenti vada in fondo per impostazione predefinita. Non è in conflitto con Apple HIG? Per un uso rapido self.navigationController? .toolbarHidden = false – Das

0

È possibile utilizzare la barra degli strumenti inclusa in tutte le UITableViews per impostazione predefinita e aggiungere UIBarButtonItems. Nonostante il nome, UIBarButtonItems può essere personalizzato per qualsiasi tipo di visualizzazione. Quindi li aggiungi alla proprietà self.toolbarItems, che è disponibile per UITableViews per impostazione predefinita. ad es.

UIBarButtonItem * textItem; 
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 250, 48)]; 
label.text = @"ImportantText"; 
label.adjustsFontSizeToFitWidth = YES; 
label.textAlignment = NSTextAlignmentRight; 
textItem = [[ UIBarButtonItem alloc ] initWithCustomView:label]; 

UIBarButtonItem * switchItem; 
UISwitch * switchCtrl = [[UISwitch alloc] init]; 
[switchCtrl addTarget:self action:@selector(toggleSomething:) forControlEvents:UIControlEventValueChanged]; 
switchItem = [[ UIBarButtonItem alloc ] initWithCustomView:switchCtrl]; 

self.toolbarItems = [ NSArray arrayWithObjects: 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
        textItem,switchItem,nil ]; 
0

Ho ottenuto questo funzionamento in uno storyboard selezionando Mostra barra degli strumenti nel controller di navigazione. Quindi trascinare gli elementi del pulsante Barra nell'area della barra degli strumenti in grigio ora visualizzata nella parte inferiore del Controller Vista tabella. Quindi cablare gli elementi del pulsante Barra fino ai metodi Navigation Controller.

Problemi correlati