Cómo llamar al método cuando la aplicación entra en primer plano desde el background

¿Hay una manera simple de llamar a un método cuando mi aplicación entra en primer plano desde el background? Hago que mi progtwig llame a un método "nowYouSeeMe" en el método viewDidLoad, que funciona muy bien cuando se ejecuta la aplicación la primera vez. Cuando uso la aplicación y presiono el button de inicio, se mueve al background como de costumbre. Ahora cuando presiono el icono de la aplicación y lo lleva al primer plano, básicamente quiero que llame de nuevo al método nowYouSeeMe.

-(void)nowYouSeeMe{ NSLog(@"I'm back"); } 

¿¿Algunas ideas??

Como ya se mencionó, hay una - (void)applicationDidBecomeActive:(UIApplication *)application; en el Delegado de la aplicación, pero la mayoría de las veces necesita la información que no esté en su delegado de la aplicación, sino en su controller de vista. Por lo tanto, puede usar NSNotificationCenter . En su delegado de la aplicación, puede hacer lo siguiente:

 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center postNotification:[NSNotification notificationWithName:@"appDidEnterForeground" object:nil]]; 

Ahora puede configurar escuchas en el código de configuration de su UIViewController :

 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(appDidEnterForeground) name:@"appDidEnterForeground" object:nil]; 

Ahora el método appDidEnterForeground se appDidEnterForeground en su controller de vista cada vez que la aplicación entra en primer plano.

Pero ni siquiera necesita publicar la notificación usted mismo porque ya está definida en UIApplication. Si se desplaza hacia abajo en la documentation ( UIApplication Class Reference ) verá todas las notifications declaradas en UIApplication.h , en su caso UIApplicationWillEnterForegroundNotification . Observe la diferencia entre UIApplicationWillEnterForeground y UIApplicationDidEnterForeground , pero la mayoría de las veces desea usar UIApplicationWillEnterForeground , solo para configurar todo y estar listo cuando se muestre la aplicación.

Por supuesto, debe definir una constante en algún lugar para su nombre de notificación y, si no necesita el observador, elimínelo.

Edit: también podría usar @selector (nowYouSeeMe) como en su pregunta, se perdió eso

En el appDelegate existe un método llamado applicationDidBecomeActive:(UIApplication *)application se activa cuando su aplicación se activa.

Intente llamar al método a través del siguiente método de delegado de la aplicación:

 - (void)applicationDidBecomeActive:(UIApplication *)application; 

Debe implementar el método applicationWillEnterForeground: en su AppDelegate, así:

 - (void)applicationWillEnterForeground:(UIApplication *)application { [self.controller nowYouSeeMe]; } 

siempre que tenga una reference a ese controller como una propiedad en su AppDelegate.

Según la respuesta de todos los demás, el delegado de la aplicación recibirá una llamada a través de applicationDidBecomeActive:

La aplicación también publicará la notificación UIApplicationDidBecomeActiveNotification . Entonces cualquiera que no sea el delegado de la aplicación puede simplemente observar eso.

No debe usar el delegado de la aplicación como una sola perezosa, todo lo demás, si puede evitarlo; si es el controller de vista específico el que quiere hacer algo solo si está activo y la aplicación vuelve al primer plano, entonces no hay razón para involucrar al delegado de la aplicación, es un comportamiento del controller de vista y no de la aplicación.