2010-02-04 7 views
44

Duplicar posible:
How do I change the title of the “back” button on a Navigation Bar¿Cómo configurar el texto de un botón Atrás en una UINavigationBar?

La situación:
Tengo un UIViewController que se rige por un mando de navegación. Puedo establecer el título de la barra de navegación que cubre el UIViewController simplemente llamando al self.title = @"title". Pero, quiero ser capaz de ajustar el botón volver texto de la barra de navegación, también (para diferentes idiomas n' tales ..)

El problema:
no sé cómo configurar el texto del botón de retroceso

La Pregunta:
¿Cómo se configura el botón de atrás de la barra UINavigation (mediante programación no en IB)?

+0

Buena pregunta. Puede que no haya una forma documentada de hacerlo (sinceramente, no lo sé), pero me sorprendería si cambiarlo a algo que no sea el título del artículo anterior o la palabra "Atrás" no fuera contra el HIG. Y si va en contra del HIG, es muy probable que esta personalización pueda generar un rechazo de la aplicación./2cents. –

+3

Sugiera configurar su "aceptar" a la respuesta de Boon, que es correcto. La respuesta de Matt no es una buena solución (lo siento, Matt! :) – Olie

+0

Cambiar la etiqueta trasera no está en contra del HIG, solo tiene que tener sentido. –

Respuesta

149

La forma setTitle - aunque parezca funcionar, es incorrecta. Si presta atención, notará que el elemento de navegación cambia al nuevo título mientras la nueva vista se anima a través de pushViewController. El hecho de que tengas que restaurar tu título en viewWillAppear es kludgy, lo que sugiere aún más su naturaleza de hackeo.

La forma correcta es hacer lo siguiente antes de su pushViewController:

 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
           initWithTitle: @"Back Button Text" 
           style: UIBarButtonItemStyleBordered 
           target: nil action: nil]; 

[self.navigationItem setBackBarButtonItem: backButton]; 
[backButton release]; 

+8

Lamentablemente, no funcionará en una devolución de llamada 'prepareForSegue: sender:'. No estoy seguro de cuál es la solución aceptada para los guiones gráficos. – wcochran

+1

Lo hice funcionar bien en un prepareForSegue: remitente: devolución de llamada. Solo deshazte de [versión de BackButton]; si estás usando ARC. – dnorcott

+9

Una cosa vale la pena enfatizar aquí: configura el botón de retroceso en el controlador de vista actual, y lo verá en el siguiente controlador de vista ... en caso de que ayude a alguien ... me ayudó. – Zsolt

12

La forma mejor y más fácil de acuerdo con la documentación de Apple para configurar el título del controlador de vista de lo que la parte trasera debe decir es esto -

Ejemplo:

Si viewController1 es bajo viewController2 (y el back button en viewController2 va a viewController1)

viewController1.title = @"something awesome"; 

la back button en viewController2 mostrará "algo impresionante"

+2

Si agrega un título a los controladores de vista en la pila de navegación, ese título aparecerá como el título del botón Atrás. "Atrás" es el texto predeterminado. No es necesario que elimines este título después de haberlo configurado. Por lo tanto, esta es la respuesta correcta. – Mark

Cuestiones relacionadas