Pregunta

Estoy cambiando el título del artículo botón de retroceso en el viewDidAppear de un controlador de la siguiente manera:

self.navigationController.navigationBar.backItem.title = @ "anterior";

Se cambia el título correctamente, pero la estoy teniendo un comportamiento extraño. Cuando selecciono el botón "anterior", cambia el título del controlador que está arriba en la pila (es decir, el controlador padre tiene ahora el título "Anterior".

¿Usted ahora por qué sucedió esto?

¿Fue útil?

Solución

Cuando se está utilizando un controlador de navegación, llamando [auto setTitle: @ "Título"]; dentro de cualquier controlador de vista en la pila será establecer el título barra de navegación. Este es también el título utilizado por defecto para el botón de retroceso cuando se ha empujado un nuevo controlador de vista. Al parecer, a partir de lo que está experimentando, establecer explícitamente el título de la backItem, también establece que para el título de la barra de navegación para el controlador de vista previa anulando lo que sea lo especificado en la llamada a -setTitle en el controlador de vista.

Probablemente será mejor simplemente administrar el título desde el interior de los controladores de vista en su pila de navegación. Cuando vaya a impulsar un nuevo controlador de vista, haga lo siguiente:

[self setTitle:@"Previous"];
NextViewController *controller = [[NextViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

Ahora, cuando la siguiente vista controlador muestra, el botón de retroceso con el ejemplo "Anterior". Ahora, sólo tiene que cambiarlo de nuevo a cualquiera que sea su verdadero título debe estar en -viewWillAppear:

- (void)viewWillAppear:(BOOL)animated;
{
    [self setTitle:@"Real Title"];
    [super viewWillAppear:animated];
}

Se puede sentir un poco hacky, pero es mejor que tratar de reemplazar la funcionalidad barra de navegación. Lucha con la barra de navegación / NAV controlador de pila puede resultar muy frustrante.

Saludos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top