2011-01-13 8 views
5

Mi aplicación tiene una barra de pestañas con dos vistas diferentes. En la primera pestaña, su vista tiene una animación de bucle continuo.iphone: reinicia la animación de bucle después de que se oculta la vista, y luego vuelve a aparecer?

Cuando hago clic en la segunda pestaña, vuelvo a la primera, la animación se ha detenido. Sé que podría comenzar de nuevo en un método viewWillAppear: pero el problema es más grande que eso. Específicamente, la animación también se detendrá si la aplicación pasa al estado de fondo y luego regresa al primer plano. En ese caso, viewWillAppear no se invoca en la transición de primer plano, por lo que la técnica viewWillAppear no haría nada.

¿Cuál es la mejor manera de manejar esta situación?

Gracias.

Respuesta

4

Para mantener la encapsulación, no desea que su AppDelegate sepa qué vistas deben reanudar las animaciones. Pero puede tener la vista que contiene el registro de animación para la notificación correspondiente (por ejemplo, en el método init de la vista) y reiniciar la animación en sí mismo.

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
     selector:@selector(startAnimation) 
      name:UIApplicationWillEnterForegroundNotification 
     object:nil]; 

... y no se olvide de dar de baja desde el centro de notificaciones en el método dealloc.

+0

Mucho mejor manera de hacer esto! Gracias. –

0

Puede configurar la animación para continuar en el método applicationWillEnterForeground de AppDelegate. Si tiene una referencia al controlador de vista de la primera pestaña en AppDelegate, simplemente llame al método viewWillAppear del controlador de vista desde AppDelegate.

+0

Sí, esto es lo que pensé. Realmente no me gustó esta solución, porque me obliga a exponer una gran cantidad de funcionalidad de controlador de vista al delegado de la aplicación, que en mi opinión debería estar oculto. (¿Por qué debería la aplicación delegar saber si mis controladores de vista tienen animaciones o no?) Pero, esto funciona, así que supongo que es el camino a seguir ahora. –

Cuestiones relacionadas