2009-11-24 11 views
10

Così, subito dopo la spinta di un controller della vista al mio tableView,Come aggiungere un pulsante alla mia destra di NavigationController dopo aver premuto un altro controller di visualizzazione?

 
// Override to support row selection in the table view. 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Navigation logic may go here -- 
    // for example, create and push another view controller. 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 

Ok, in modo che rende un'altra diapositiva vista, e si può tornare alla vista precedente ("pop" la vista corrente) facendo clic il pulsante che automaticamente viene visualizzato nell'angolo in alto a sinistra della barra di navigazione ora.

Ok, quindi direi di voler popolare il lato destro della barra di navigazione con un pulsante FATTO, come nell'app "Note" fornita con l'iPhone. Come potrei farlo?

Ho provato il codice come questo:

 
    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    self.navigationController.navigationItem.rightBarButtonItem = doneButton ; // not it.. 

    [doneButton release] ; 

doneFunc è definito, e tutto ciò, solo il pulsante non appare sul lato destro ..

risposta

11

AH. Devi fare:

 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 


    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    anotherViewController.navigationItem.rightBarButtonItem = doneButton ; 

    [doneButton release] ; 
} 

Who'da thunk.

+14

Avresti dovuto accettare la risposta di Thomas piuttosto che la tua. – titaniumdecoy

30

Il codice che hai postato dovrebbe funzionare bene, credo. La domanda è, dove l'hai messa? Lo inserisco nel metodo -viewDidLoad del controller di visualizzazione che stai inserendo. Se hai bisogno di pulsanti diversi a seconda del contenuto che stai visualizzando, puoi farlo nel metodo -viewWillAppear:.

Aggiornamento: In realtà, penso che è necessario modificare

self.navigationController.navigationItem.rightBarButtonItem = doneButton; 

a

self.navigationItem.rightBarButtonItem = doneButton; 
+0

No, ci ho provato .. ma è stato utile. L'ho spostato in viewDidAppear. Sembra che il problema sia che il pulsante giusto ottiene _HIDDEN_ ogni volta che un nuovo controller di visualizzazione viene inserito in cima allo stack – bobobobo

+0

Ho aggiornato la mia risposta. Penso che ci sia un bug nel tuo codice. Fammi sapere se questo lo risolve. –

+0

No, l'ho provato, ma rightBarButtonItem è ancora __disappears__ una volta che il nuovo controller di visualizzazione è stato inserito. – bobobobo

Problemi correlati