2009-11-24 8 views
10

also unmittelbar nach einem View-Controller auf meine Tableview schieben,Wie füge ich der rechten Seite meines navigationControllers eine Schaltfläche hinzu, nachdem ich einen anderen View-Controller gedrückt habe?

 
// 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, so dass auf eine andere Ansicht Rutsche macht, und Sie können zur vorherigen Ansicht zurück („Pop“ die aktuelle Ansicht) durch einen Klick Die Schaltfläche automatisch erscheint jetzt in der oberen linken Ecke der Navigationsleiste.

OK, also SAG Ich möchte die RECHTE SEITE der Navigationsleiste mit einer DONE-Taste füllen, wie in der App "Notes", die mit dem iPhone geliefert wird. Wie würde ich das tun?

Ich habe versucht, Code wie folgt:

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

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

    [doneButton release] ; 

doneFunc definiert ist, und alles, nur die Taste erscheint nie auf der rechten Seite ..

Antwort

11

AH ändern müssen. Sie müssen tun:

 
- (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 es.

+14

Sie sollten Thomas 'Antwort lieber als Ihre eigenen akzeptiert haben. – titaniumdecoy

30

Der Code, den Sie sollten in Ordnung geschrieben arbeiten, denke ich. Frage ist, wo hast du es gesagt? Ich würde es in die -viewDidLoad Methode des View-Controllers setzen, die Sie drängen. Wenn Sie verschiedene Tasten abhängig von dem Inhalt benötigen, den Sie zeigen, dann könnten Sie es in der -viewWillAppear: Methode tun.

aktualisieren: Eigentlich denke ich, Sie

self.navigationController.navigationItem.rightBarButtonItem = doneButton; 

zu

self.navigationItem.rightBarButtonItem = doneButton; 
+0

Nein, versuchte das .. aber es war hilfreich. Ich habe es zu ViewDidAppear verschoben. Es scheint, das Problem ist die rechte Taste ruft _HIDDEN_ immer wenn ein neuer View-Controller oben auf dem Stapel geschoben wird – bobobobo

+0

Ich habe meine Antwort aktualisiert. Ich denke, es gibt einen Fehler in Ihrem Code. Lass es mich wissen, wenn dies das Problem behebt. –

+0

Nein, ich habe es versucht, aber das rightBarButtonItem wird immer noch __disappears__, sobald der neue View-Controller gedrückt wird. – bobobobo

Verwandte Themen