web-dev-qa-db-fra.com

iOS NSNotificationCenter pour vérifier si l'application est passée de l'arrière-plan au premier plan

J'ai une situation dans laquelle je dois initialiser un objet à chaque fois quand il vient de l'arrière-plan au premier plan et qui devrait utiliser NSNotificationCenter non pas avec appdelegate car iam construit une bibliothèque statique afin qu'il ne soit pas appdélégué avec cela, alors aidez-moi s'il vous plaît .

11
user3115014

Avez-vous essayé UIApplicationWillEnterForegroundNotification?

L'application envoie également une notification UIApplicationWillEnterForegroundNotification peu de temps avant d'appeler applicationWillEnterForeground: pour donner aux objets intéressés une chance de répondre à la transition.

S'abonner à la notification:

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

Implémenter un code, qui doit être appelé:

- (void) yourUpdateMethodGoesHere:(NSNotification *) note {
// code
}

N'oubliez pas de vous désabonner:

[[NSNotificationCenter defaultCenter] removeObserver:self];
22
Nikita Took

Version Swift 3

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    NotificationCenter.default.addObserver(self,
                                           selector:#selector(applicationWillEnterForeground(_:)),
                                           name:NSNotification.Name.UIApplicationWillEnterForeground,
                                           object: nil)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    NotificationCenter.default.removeObserver(self)
}

func applicationWillEnterForeground(_ notification: NSNotification) {
   ....
}

vous pouvez également utiliser NSNotification.Name.UIApplicationDidBecomeActive

7
mt81

Swift 4.2

NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification
            , object: nil)
4
Miotz

Version Swift 3 et 4

NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationWillEnterForeground, object: nil, queue: nil) { notification in
        ...
}
1
omerx

Swift 4.1

 override func viewDidAppear(_ animated: Bool) {
        NotificationCenter.default.addObserver(self, selector: #selector(enterForeground), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
    }

    override func viewDidDisappear(_ animated: Bool) {
        NotificationCenter.default.removeObserver(self, name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
    }

    @objc func enterForeground() {
       // Do stuff
   }
0
GSK