Tengo un controlador de navegación. Una de las vistas agrega subvistas personalizadas en su viewDidAppear:
. Noté que la primera vez que navego a una instancia de este controlador de vista después de iniciar la aplicación, invoca dos veces viewDidAppear:
. Si saco esta vista de la pila y navego hacia ella de nuevo, viewDidAppear:
invoca solo una vez por aparición. Todas las apariciones posteriores invocan viewDidAppear:
una vez.viewDidAppear llamó dos veces en la misma instancia, pero solo la primera vez que esta clase se carga forma NIB
El problema para mí es que la primera vez que llego a esta vista, termino con el doble de subvistas. Resuelvo este problema mediante la introducción de una variable de marcador o algo así, pero me gustaría entender qué está sucediendo y cómo puedo obtener dos invocaciones en estas circunstancias.
Tengo un punto de interrupción en 'viewDidAppear:'. ¿Cómo puede responder la pregunta por qué? – iter
Mire la traza de pila para descubrir por qué el sistema llama a este método. Si la traza inversa es diferente para ambas llamadas, puede usar esto para intentar averiguar qué está pasando. Sin embargo, esto puede o no ser útil, dependiendo precisamente de lo que está contenido en la traza inversa. –
Las pilas se ven idénticas, de ahí mi sorpresa por su sugerencia. Mi solución es refactorizar el código para poder llamar el código en 'viewDidAppear:' indirectamente desde 'viewDidLoad:', y así evitar todo el problema. Estoy aceptando tu respuesta, aunque la doble invocación sigue siendo un misterio para mí. – iter