2010-08-21 14 views
10

Je souhaite donc prendre en charge le changement d'application dans mon application iPhone à venir et j'ai mis en place toutes les méthodes de délégation appropriées dans mon application. Ainsi, lorsque l'utilisateur reprend l'application, je peux voir son activité dans le NSLog et tout. Cependant, comment puis-je dire que mon application a repris un contrôleur? Y at-il une méthode que je peux mettre dans mon contrôleur pour me dire que l'application a repris dans ledit contrôleur? La raison que je demande est parce que mon application gère son propre schéma d'URL, et je veux mettre à jour la vue en fonction de l'URL lancée. Toute aide est la bienvenue.Comment savoir quand le contrôleur a quitté l'arrière-plan?

Merci à l'avance

Répondre

19

Vous pouvez vous faire votre contrôleur observer la notification UIApplicationWillEnterForeground. Il serait probablement ressembler à quelque chose comme ceci:

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
    //do stuff here 
    if(&UIApplicationWillEnterForegroundNotification) { //needed to run on older devices, otherwise you'll get EXC_BAD_ACCESS 
     NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
     [notificationCenter addObserver:self selector:@selector(enteredForeground:) name:UIApplicationWillEnterForegroundNotification object:nil]; 
    } 


} 
- (void)enteredForeground:(NSNotification*) not 
{ 
    //do stuff here 
} 
+0

Comment puis-je faire cela? –

-2

Vous pouvez aussi remplacer - (void)applicationDidBecomeActive:(UIApplication *)application dans le délégué de l'application de l'avoir fait tout ce que vous voulez qu'il fasse quand il revient de l'arrière-plan. Si vous voulez une vue particulière pour obtenir le message plutôt que le délégué de l'application, vous devez vous inscrire à la notification comme décrit par Elfred ci-dessus.

1

Pour Swift 4:

NotificationCenter.default.addObserver(self, 
selector: #selector(appWillEnterForeground), 
name: NSNotification.Name.UIApplicationWillEnterForeground, 
object: nil) 



@objc func appWillEnterForeground() { 
    // do staff 
} 
+0

Le nombre de parenthèses ouverte et fermée n'est pas égal. – ittgung

+0

@ittgung merci :) – chawki