En mi aplicación tengo un controlador de navegación básico. Para todos mis puntos de vista, excepto uno, el controlador funciona como debería.iPhone: ¿Cómo anulo el botón Atrás en un Controlador de navegación?
Sin embargo, para una vista en particular, me gustaría que el botón 'atrás' no vuelva a la vista anterior, sino que vaya a uno que configuré. En particular, va a retroceder 2 vistas y omitirá una.
Después de hacer algunas investigaciones he encontrado que puedo interceptar la vista cuando desaparece, por lo que trató de poner en el código para que se vaya a la página me gustaría:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//i set a flag to know that the back button was pressed
if (viewPushed) {
viewPushed = NO;
} else {
// Here, you know that back button was pressed
mainMenu *mainViewController = [[mainMenu alloc] initWithNibName:@"mainMenu" bundle:nil];
[self.navigationController pushViewController:mainViewController animated:YES];
[mainViewController release];
}
}
Eso no funcionó, entonces ¿alguien tiene alguna idea?
Gracias!
¡Hasta ahora eso funciona genial! ¡¡Gracias por su respuesta!! Pude crear el botón personalizado, crear el método y construir la matriz con la lista de vistas abiertas. Sin embargo, recibo un error de 'excepción no detectada' cuando paso por la línea popToViewController ... Incluso probé esto: [self.navigationController popToViewController: [vcs objectAtIndex: 1]]; en vano. Estoy investigando más sobre popToViewController ahora. –
Terminé usando: [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: 0] animado: YES]; volver los dos niveles ... funciona muy bien hasta ahora, ¡así que gracias! –
Si solo quiere volver al nivel superior, hay popToRootViewControllerAnimated: que debería funcionar. –