2010-01-13 5 views
7

Quando si spinge un nuovo ViewController su uno stack di controller di navigazione, il pulsante "indietro" è il titolo del controller precedente.iPhone: NavigationController NavigationBar Pulsante Indietro testo

Come posso modificare il testo nel pulsante Indietro su "Indietro" invece del nome predefinito dell'ultimo controller?

+0

è sufficiente sapere che questo è malvista dalle linee guida di interfaccia di iPhone di Apple. (Anche se certamente necessario quando i titoli di lungo periodo.) –

risposta

1

È possibile impostare il titolo sul titolo del controller della vista principale navigationItem. Fondamentalmente ogni UIViewController ha un piccolo stub UINavigationItem che contiene metadati su modalità che guarda dovrebbe fare riferimento all'interno di un UINavigationController. Per impostazione predefinita, i metadati rientrano nello stesso UIViewController.

Supponendo 'sé' è la UIViewController della vista che è visibile all'interno del UINavigationController, impostare:

self.navigationItem.title = @"My Custom Title" 
+3

rende questo non è solo il titolo di pulsanti "My Custom Title", ma rende anche la pagina precedente nel titolo di Navigazione Stack "My Custom Title". – Matt

10

È necessario creare un pulsante personalizzato sul controller di navigazione. Inserire il seguente codice nella viewDidLoad nella vostra Root View Controller:

UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease]; 
tempButtonItem .title = @"Back"; 

self.navigationItem.backBarButtonItem = tempButtonItem ; 

Impostando il pulsante di navigazione bar sulla View Controller Root, la vista spinto mostra il pulsante Indietro appropriata.

27

Questo è il modo corretto di fare un pulsante indietro con qualcosa di diverso dal titolo pagine precedenti

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init]; 
barButton.title = @"Your Title"; 

self.navigationItem.backBarButtonItem = barButton; 

sua per la mia comprensione che:

self.navigationItem.backBarButtonItem.title = @"Your Title"; 

renderà il titolo della barra di navigazione nella pagina precedente ciò che non è ciò che desideri.

2

È possibile modificare il titolo della vista corrente di controllo del controller di navigazione prima di spingere la nuova visualizzazione del controller:

self.title = @"Custom Title"; 

[self pushViewController: newViewController ...]; 

and in the navigation controller's delegate class 

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

if([viewController class] == [OldViewController class]) { 

viewController.title = @"Your previous title"; 

} 

} 
12

Lo so, la questione è molto vecchio, ma ho trovato una bella soluzione.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init]; 
barButton.title = @"back"; 
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton; 

Funziona da childView! Testato con iOS 7.

+2

Questa dovrebbe essere la risposta accettata. – nickdnk

0

È possibile raggiungere questo impostando il titolo di nuovo pulsante nella funzione "viewWillDisappear" del controllore di origine come segue:

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     //Set Title for this view 
     self.navigationItem.title = "My Title" 

} 

override func viewWillDisappear(animated: Bool) { 
     super.viewWillAppear(animated) 
     //Set Title for back button in next view 
     self.navigationItem.title = "Back" 
}