Pregunta

La aplicación muestra información acerca de los planetas, sus lunas, etc. Muestra una lista de planetas, permite al usuario seleccionar un planeta y ver sus detalles y luego marcarlo o desmarcarlo. Tengo una vista que muestra al usuario los detalles del planeta seleccionado, también contiene un botón de agregar / quitar marcador. Si el usuario hace clic en ese botón, ese marcador se agrega / elimina y se empuja otra vista encima de la vista actual para decirle al usuario que el marcador se ha eliminado.

Ahora la pregunta es cuando el usuario hace clic en el botón de detalles del planeta / retroceso a la izquierda de la barra de navegación que se muestra en la vista de estado y regresa a la vista de detalles del planeta, todavía se le muestra agregar / quitar (lo que se mostró anteriormente) mientras que ahora debería eliminarse / agregarse (de acuerdo con el botón cargado anteriormente) de acuerdo con el código que escribí.

Lo que puedo entender es que cuando el usuario hace clic en el botón Atrás, la vista anterior no se vuelve a cargar, la vista de estado simplemente aparece. ¿Hay alguna manera de hacer que la aplicación ejecute setNeedsDisplay o algo que pueda volver a cargar el código de viewDidLoad de detalles del marcador cuando el usuario hace clic en el botón Atrás en la vista de estado?

¿O hay otra solución posible?

Es muy confuso para el usuario, ya que piensa que acaba de eliminar / agregar el marcador, pero el botón todavía le pide que agregue / elimine ...

Esa vista de estado también es utilizada por otra sección del código para mostrar los resultados al usuario de una acción para que no pueda cambiar su código, o tal vez pueda verificar la vista anterior, verifique si era planeta detalles y luego vuelva a cargar su contenido ...

¿Fue útil?

Solución

Tome el código que configura el botón en el método viewDidLoad y muévalo a viewWillAppear. Debería actualizar el botón correctamente cuando vuelva a ingresar a la vista.

Otros consejos

Encontré una solución: Dicho código (botón que cambia después de un popViewController o tales eventos) debe escribirse en viewWillApear para que se ejecute cada vez que se carga la vista, pase lo que pase.

Gracias a Quentarez y crackity_jones en #iphonedev en irc.freenode.net.

establecer el delegado correcto y

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top