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

Kas*_*spa 9 background uiviewcontroller multitasking ios4 ios

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

在 3.XI 中会依赖 viewDidLoad 进行一些初始化等操作,但是对于 4.X 则不是这种情况,因为您不能依赖于调用 viewDidLoad 方法。

我想避免在 appdelegate 中放置额外的标志来检测这一点,我宁愿在 UIViewController 中使用一种可靠的方法来执行此操作,但似乎无法在 UIViewController 的生命周期中找到任何可以帮助我的东西。

有任何想法吗?你如何处理这些情况?

小智 6

斯威夫特 5

订阅通知


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

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

Run Code Online (Sandbox Code Playgroud)

删除通知


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

            NotificationCenter.default.removeObserver(self)
    } 

Run Code Online (Sandbox Code Playgroud)


Hen*_*sel -7

- (void)viewWillAppear:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

不是

- (void)viewDidLoad
Run Code Online (Sandbox Code Playgroud)

应用程序委托方法

- (void)applicationWillEnterForeground:(UIApplication *)applicationUIApplicationDelegate

UIApplicationWillEnterForegroundNotification尽管您可以在任何视图中添加观察者,但应用程序进入前台后将被调用。

  • @Kaspa - 实际上,从后台返回时不会调用 viewWillAppear (http://stackoverflow.com/questions/5277940/why-does-viewwillappear-not-get- Called-when-an-app-comes-back-from -背景) (39认同)