versiones que descargar iphone ios

iphone - que - ¿Cuál es la diferencia entre-viewWillAppear: y-viewDidAppear:?



ios que es (9)

¿Cuál es la diferencia entre -[UIViewController viewWillAppear:] y -[UIViewController viewDidAppear:] ?


Como su nombre indica, se llama a viewWillAppear antes de que la vista esté a punto de aparecer y se llama a viewDidAppear cuando apareció la vista.


Diferencia entre "will" y "did" ... Como su nombre indica, se llama a viewWillAppear antes de que la vista esté a punto de aparecer y se llama a viewDidAppear cuando apareció la vista.


En general, esto es lo que hago:

1) ViewDidLoad : cada vez que agregue controles a una vista que debería aparecer junto con la vista, de inmediato, la coloco en el método ViewDidLoad. Básicamente, este método se invoca cada vez que la vista se carga en la memoria. Entonces, por ejemplo, si mi vista es un formulario con 3 etiquetas, agregaría las etiquetas aquí; la vista nunca existirá sin esas formas.

2) ViewWillAppear : uso ViewWillAppear generalmente solo para actualizar los datos en el formulario. Entonces, para el ejemplo anterior, usaría esto para cargar los datos de mi dominio en el formulario. La creación de UIViews es bastante costosa, y debes evitar tanto como sea posible haciendo esto en el método ViewWillAppear, porque cuando esto se llama, significa que el iPhone ya está listo para mostrar UIView al usuario, y cualquier cosa pesada que hagas aquí afectará el rendimiento de una manera muy visible (como las animaciones que se retrasan, etc.).

3) ViewDidAppear : Finalmente, utilizo ViewDidAppear para comenzar nuevos hilos a cosas que tardarían mucho tiempo en ejecutarse, como por ejemplo hacer una llamada a un servicio web para obtener datos adicionales para el formulario de arriba. Lo bueno es que porque la vista ya existe y se muestra al usuario, puede mostrar un buen mensaje de "Espera" al usuario mientras obtiene los datos.


Lo primero sucede antes de que aparezca la vista y lo último sucede después.


Para resumir:

-viewWillAppear -> actualizar datos (volver a cargar datos desde una vista de tabla)

-viewDidAppear -> operaciones costosas (llamada API con un buen progreso HUD!)


Se viewWillAppear método viewWillAppear antes de cargar la vista real.

El método viewDidAppear se viewDidAppear cuando la vista ya está cargada y desea mostrar algo.


viewwillappear llamará antes de cargar la vista para que pueda realizar determinada tarea antes de cargar esa vista y viewdidappear llamará después de cargar la vista para que la tarea de publicación se realice en ese método


viewDidLoad === >>> Coloque aquí su código de inicialización. No coloque datos dinámicos que puedan cambiar durante el ciclo de vida de la vista. Entonces, si está extrayendo datos de los datos centrales, no quiere hacerlo aquí si esto pudiera cambiar durante la vida de la vista. Por ejemplo: supongamos que tiene un controlador de pestañas. Cambia de tab1 a tab2 y cambia algo en el modelo en tab2. Si vuelve a la pestaña 1 y su código de modelo se realizó en viewDidLoad, esto no se actualizará (suponiendo que no esté utilizando KVO o NSFetchedResultsController, etc.).

viewWillAppear === >>> Esto se invoca cada vez que la vista está por aparecer, ya sea que la vista ya esté en la memoria o no. Coloque aquí su código dinámico, como la lógica del modelo.

viewDidAppear === >>> Realice operaciones costosas aquí que solo desea hacer si está seguro de que la vista está en pantalla, como las llamadas de red.

Aviso: si su aplicación está en segundo plano y vuelve al primer plano, debe manejar esto usando NSNotificationCenter. Escribí el código para eso en los comentarios a continuación. Podría pensar que se disparará viewWillAppear / viewDidAppear. Pon un punto de quiebre allí y pruébalo. No dispara. Por lo tanto, si algo ha cambiado para su aplicación mientras estaba en segundo plano, deberá actualizarla mediante notificaciones.


viewWillAppear:
■ Llamado antes de agregar la vista a la jerarquía de vistas de Windows
■ Llamado antes de [vc.view layoutSubviews] (si es necesario)
viewDidAppear :
■ Invocado después de que la vista se agrega a la jerarquía de vista
■ Invocado después de [vc.view layoutSubviews] (si es necesario)