我知道你可以监听这种应用状态的通知,但是…有可能那样知道吗?
我需要知道视图何时会消失,因为另一个视图正在显示,而不是因为应用程序将进入后台状态。
谢谢
当应用程序进入后台/返回前台时,viewWillAppear:
和viewDidAppear:
将不会被调用,因为与应用程序相关的视图状态没有改变。
你只能观察到UIApplicationDidEnterBG/willEnterFG通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppWillEnterForeground:)
name:UIApplicationWillEnterForegroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification object:nil];
注意:如果你在willAppear中添加观察者并在didDisappear中删除它们,你可以自己添加willDisappear/viewDidAppear
你应该在你的ViewController的viewDidLoad方法中注册一个UIApplicationWillEnterForegroundNotification,当应用程序从后台返回时,你可以在注册通知的方法中做任何你想做的事情。当应用程序从后台返回到前台时,ViewController的viewWillAppear或viewDidAppear将不会被调用。
-(void)viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doYourMethod)
name:UIApplicationWillEnterForegroundNotification
object:nil];
}
-(void)doYourMethod{
// do whatever you want to do when app comes back from background.
}
不要忘记取消注册您已注册的通知。
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
你是说viewWillDisappear
?如果是这样,当应用程序进入后台时,viewWillDisappear
不会被调用,viewDidDisappear
也不会被调用,你可以像@Daij-Djan说的那样观察通知。
关于viewWillDisapper, Apple说
当视图从视图层次结构中移除时,调用该方法。这个方法在视图被实际移除和任何动画被配置之前被调用。