如何知道viewWillAppear:或viewDidAppear:是否被调用,因为应用程序将进入后台



我知道你可以监听这种应用状态的通知,但是…有可能那样知道吗?

我需要知道视图何时会消失,因为另一个视图正在显示,而不是因为应用程序将进入后台状态。

谢谢

当应用程序进入后台/返回前台时,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的viewWillAppearviewDidAppear将不会被调用。

-(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说

当视图从视图层次结构中移除时,调用该方法。这个方法在视图被实际移除和任何动画被配置之前被调用。

相关内容

最新更新