2010-08-10 10 views
8

Tengo un UITableView que carga datos remotos de la red. Tengo la lógica en vista de que WillAppear manejará la actualización de los datos cuando sea necesario en función de los cambios de estado y un TTL para el conjunto de datos. Esto funciona bien dentro de una "sesión" de aplicación, pero no es efectivo cuando el usuario sale de la aplicación hacia el fondo y luego lo restaura directamente a esta vista.Responde a applicationWillEnterForeground en un UIView

Lo que estoy descubriendo es que cuando la aplicación se restaura al primer plano en iOS4 - viewWillAppear no se invoca en la vista- puedo entender totalmente por qué esto es por diseño. ¿Hay algún otro delegado de UIView que debería aprovechar? No detecté nada en los documentos.

Dado que willEnterForeground está disponible en la aplicación, el delegado es la mejor manera de manejar esta descarga una notificación del delegado de la aplicación a la vista? ¿Me falta una forma más directa y elegante de captar esto en una UIView?

Gracias por cualquier consejo.

Respuesta

16

Tiene razón acerca de las llamadas de delegado, aunque para lo que está haciendo me parece que desea suspender y reanudar su actividad de red según los métodos applicationDidBecomeActive: y applicationWillResignActive: que se encuentran en el delegado de la aplicación.

En respuesta a su pregunta acerca de una forma más directa de la captura de estas notificaciones en su UIView, si usted no tiene acceso conveniente al delegado de la aplicación que pudiera register for notification de UIApplicationDidBecomeActiveNotification y UIApplicationWillResignActiveNotification a través del centro de notificación predeterminado. Eso de alguna manera te separa de acoplar el delegado de la aplicación a tu vista.

+0

Muchas gracias. En el puntero para Activo/Inactivo tiene mucho sentido. Fue una tontería pensar en una notificación personalizada del delegado de la aplicación al controlador de visualización, gracias por señalar que hay notificaciones del sistema para escuchar que cubran esto. Dejaré de hacer las cosas demasiado difíciles ahora :) – Nick

+1

swift 3: 'NotificationCenter.default.addObserver (self, selector: #selector (self.applicationDidBecomeActive), nombre: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)' – Tony

Cuestiones relacionadas