Llamar programáticamente al botón de retroceso del controlador de navegación en iOS


84

En una aplicación de iPhone basada en UINavigationController, en un método me gustaría realizar el equivalente programático de presionar el botón Atrás y retroceder una vista.

es decir, presione automáticamente el botón Trabajos como se ve aquí:

Imagen del controlador de navegación

¿Hay una llamada genérica de iOS que pueda hacer o se requiere más información?

Respuestas:


188

UINavigationControllerEl -popViewControllerAnimated:método de debe hacer lo que quieras:

[navigationController popViewControllerAnimated:YES];

12
increíble, gracias a Steve y Niels. La solución que utilicé fue [self.navigationController popViewControllerAnimated: YES]; fácil;)
oberbaum

esto funciona muy bien, excepto los controladores de vista agregados en uitabbar. ¿¿alguna pista??
virata

1
Agregué [self.navigationController popViewControllerAnimated:YES];pero no hace nada, sin embargo, hay una alerta al grabar ese botón que está funcionando.
mohsin.mr

Mmm, aparece una pantalla en blanco, una aplicación que no responde y lo siguiente en la consola: "Finalizando una transición de navegación en un estado inesperado. El árbol de la subvista de la barra de navegación podría dañarse".
Kurt

24

Suponiendo que en realidad no desea PRESIONAR el botón mediante programación, sino que simplemente copia el resultado de presionar el botón, debe indicarle al controlador de navegación que muestre el controlador de vista actual.

[self.navigationController popViewControllerAnimated:YES];

Esto lo eliminará de la pila y lo devolverá al controlador de vista anterior.


21

Swift 3.0

Volver a la vista raíz

self.navigationController?.popToRootViewController(animated: true)

Volver a la vista anterior

self.navigationController?.popViewController(animated: true)

Swift 2.3

Volver a la vista raíz

self.navigationController?.popToRootViewControllerAnimated(true)

Volver a la vista anterior

self.navigationController?.popViewControllerAnimated(true)

7

Deberías llamar

popViewControllerAnimated:

que es lo opuesto a agregar controladores de vista con pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

es la mejor opción, pero si no está en la misma clase de controlador de vista o si su delegado cambia antes de que se llame al método del botón de retroceso, también puede intentar--

primero tienes que definir el botón de retroceso ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

y luego en el método backButtonTapped puede llamar a--

[self.navigationController pushViewController:desiredViewController animated:YES];
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.