2010-01-13 9 views
7

Cuando presiono un nuevo ViewController en una pila de controlador de navegación, el botón "Atrás" es el Título del controlador anterior.iPhone: NavigationController NavigationBar Texto del botón Atrás

¿Cómo puedo cambiar el texto en el botón Atrás a "Atrás" en lugar del nombre predeterminado del último controlador?

+0

Sólo sé que esto está mal visto por directrices de la interfaz del iPhone de Apple. (Aunque es necesario cuando los títulos se ejecutan mucho). –

Respuesta

1

En realidad, puede establecer el título en el título del controlador de vista principal navigationItem. Básicamente, cada UIViewController tiene un pequeño código auxiliar UINavigationItem que contiene metadatos sobre cómo se debe hacer referencia a esa vista dentro de un UINavigationController. De forma predeterminada, los metadatos simplemente vuelven al UIViewController.

Asumiendo 'yo' es el UIViewController de la opinión de que es visible dentro de la UINavigationController, establece:

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

Esto no solo hace que los botones titulen "Mi título personalizado", sino que también hace que la página anterior en el título de la pila de navegación sea "Mi título personalizado". – Matt

10

Debe crear un botón personalizado en el controlador de navegación. Coloque el código siguiente en el viewDidLoad en su controlador de vista raíz:

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

self.navigationItem.backBarButtonItem = tempButtonItem ; 

Al establecer el botón de la barra de navegación a la vista, controlador de raíz, la vista empujado muestra el botón de retroceso apropiado.

27

Esta es la forma correcta de hacer un botón de retroceso con algo más que el título páginas anteriores

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

self.navigationItem.backBarButtonItem = barButton; 

Su a mi entender que:

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

hará que el título de la barra de navegación en la página anterior sea el que no es lo que desea.

2

Puede cambiar el título de la vista del controlador de corriente del controlador de navegación antes de pulsar el nuevo controlador de vista:

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

que sé, la cuestión es muy antiguo, pero me pareció una buena solución.

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

Funciona desde childView! Probado con iOS 7.

+2

Esta debería ser la respuesta aceptada. – nickdnk

0

Usted puede lograr esto mediante la creación del título botón Atrás en la función "viewWillDisappear" del controlador de origen de la siguiente manera:

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" 
} 
Cuestiones relacionadas