iOS NSNotificationCenter 检查应用程序是否从后台到前台
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24910765/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
iOS NSNotificationCenter to check whether the app came from background to foreground
提问by user3115014
I have a situation in which i have to intialize an object everytime when it comes from background to foreground and that should be using the NSNotificationCenter not with appdelegate because iam building a static library so there wont be appdelegate with that so please help me in the same.
我有一种情况,每次从背景到前景时,我都必须初始化一个对象,并且应该使用 NSNotificationCenter 而不是 appdelegate,因为我正在构建一个静态库,因此不会有 appdelegate,所以请帮助我.
回答by Nikita Took
Have you tried UIApplicationWillEnterForegroundNotification
?
你试过UIApplicationWillEnterForegroundNotification
吗?
The app also posts a UIApplicationWillEnterForegroundNotification notification shortly before calling applicationWillEnterForeground:
to give interested objects a chance to respond to the transition.
该应用程序还会在调用之前不久发布 UIApplicationWillEnterForegroundNotification 通知applicationWillEnterForeground:
,让感兴趣的对象有机会响应转换。
Subscribe to notification:
订阅通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(yourUpdateMethodGoesHere:)
name:UIApplicationWillEnterForegroundNotification
object:nil];
Implement a code, that need to be called:
实现一个需要调用的代码:
- (void) yourUpdateMethodGoesHere:(NSNotification *) note {
// code
}
Don't forget to unsubscribe:
不要忘记取消订阅:
[[NSNotificationCenter defaultCenter] removeObserver:self];
回答by Andrea Miotto
Swift 4.2
斯威夫特 4.2
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification
, object: nil)
回答by mt81
Swift 3 version
斯威夫特 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) {
....
}
you can also use NSNotification.Name.UIApplicationDidBecomeActive
你也可以使用 NSNotification.Name.UIApplicationDidBecomeActive
回答by Kiran Jasvanee
Swift 5
斯威夫特 5
Subscribe to Notification -
订阅通知 -
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
NotificationCenter.default.addObserver(
self,
selector: #selector(applicationWillEnterForeground(_:)),
name: UIApplication.willEnterForegroundNotification,
object: nil)
}
Remove subscription -
删除订阅 -
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self)
}
Function to be called -
要调用的函数 -
@objc func applicationWillEnterForeground(_ notification: NSNotification) {
self.volumeSlider.value = AVAudioSession.sharedInstance().outputVolume
}
回答by omerx
Swift 3 and 4 version
Swift 3 和 4 版本
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationWillEnterForeground, object: nil, queue: nil) { notification in
...
}
回答by Gurjinder Singh
swift 4.1
快速 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
}