2011-07-28 6 views
5

Cada vez que aparece un controlador de vista manualmente, viewWillAppear no se llama en el UIViewController anterior que aparece ahora.Popping ViewController no llama a viewWillAppear cuando retrocede

Estos son 2 UIViewControllers regulares. Mi configuración de la aplicación es la siguiente:

- UINavigationController 
    - UITabViewController with 5 UIViewControllers including UIViewControllerA 
     -UIViewControllerA (When I get back here, viewWillAppear doesnt get called) 
     -UIViewControllerB (I'm here, I want to pop to A) 

He intentado llamar viewWillAppear de forma manual, pero eso no ayuda tampoco. ¿Qué podría estar mal? Mi último recurso será abrir B, y A, y luego crear una nueva A, y presionar eso, pero eso es solo como último recurso (¿supongo que esto funcionará?)

+0

si se trata de un modal, entonces no se llamará a viewwillappear. Así es como es la arquitectura. Necesita crear un delegado en Modal e implementarlo en ViewController principal. Entonces, cuando sucede algo en el controlador de vista del modelo, puede rastrearlos en el ViewController principal. –

Respuesta

1

No se llamará porque la vista es en el interior del mando de navegación, pero he encontrado una solución aquí:

http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/

Espero que ayude.

+0

¿Es posible configurar el primer UIViewController en NIL mientras está en la pila, y luego reasignarlo cuando estoy a punto de mostrar el UIViewController actual para volver? Solo quiero que se llame de nuevo a viewWillAppear. –

+0

@Hisoka No creo que funcione, establecer la variable en cero no hará nada, ya que el controlador de navegación tiene una referencia y la conserva. No estoy seguro de cómo puedes obtener ese método para que te llamen nuevamente. –

+1

Su respuesta aquí no es correcta. Si muestra un modal y luego descarta el modal, tendrá su 'viewWillAppear:' llamada de nuevo. Creo que OP está teniendo el problema que @Daniel Dickison señala a continuación. No se trata de leer en la memoria (eso es 'viewWillLoad'). Se está confundiendo acerca de qué controlador de vista está a cargo cuando anillas controles de vista en órdenes impares. –

Cuestiones relacionadas