从后台打开应用程序时调用了什么UIViewController方法?

时间:2010-09-04 18:51:58

标签: uiviewcontroller background ios4 ios multitasking

是否有任何方便的方法来确定是否正在从处于后台模式的应用加载视图?

在3.X中,我会依赖viewDidLoad做一些初始化等等,但这不是4.X的情况,因为你不能依赖于调用viewDidLoad方法。

我想避免在appdelegate中添加额外的标志来检测这个,我宁愿在UIViewController中使用一种可靠的方法,但是在UIViewController的生命周期中似乎无法找到任何可以帮助我的东西这里。

有什么想法吗?你如何处理这种情况?

3 个答案:

答案 0 :(得分:4)

雨燕5

订阅通知


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

        @objc func appMovedToForeground() {
            //Your code here
        }

删除通知


    override func viewWillDisappear(_ animated: Bool) {
            super.viewWillDisappear(animated)

            NotificationCenter.default.removeObserver(self)
    } 

答案 1 :(得分:0)

UIViewController的生命周期没有将应用程序从后台移动到前台时将被调用的方法。

当您希望此事件触发某些特定的代码块时,需要为名为Notification.Name.UIApplicationWillEnterForeground的通知添加观察者。例如:

NotificationCenter.default.addObserver(self, selector: #selector(appMovedToForeground), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)

@objc func appMovedToForeground() {
    //Your code here
}

请记住,您将需要删除观察者以防止它在整个应用程序中触发。

答案 2 :(得分:-4)

- (void)viewWillAppear:(BOOL)animated

- (void)viewDidLoad

应用程序代理方法

- (void)applicationWillEnterForeground:(UIApplication *)applicationUIApplicationDelegate

虽然您可以在任何视图中为UIApplicationWillEnterForegroundNotification添加观察者,但在应用程序进入前景后将调用