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 .
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];
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
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification
, object: nil)
Version Swift 3 et 4
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationWillEnterForeground, object: nil, queue: nil) { notification in
...
}
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
}