如果我按下主页按钮并在5秒钟后启动应用程序,将调用viewDidLoad

时间:2018-10-26 08:10:50

标签: ios iphone swift4 viewdidload

我知道加载视图后会调用viewDidLoad。视图初始化,推送或显示时仅调用一次。

但是我想知道的是,当我输入background state 4-5秒钟并再次打开该应用程序时。 viewDidLoad将再次被调用。

我基本上希望每次启动我的应用程序时都运行一个代码。 我将如何实现?

1 个答案:

答案 0 :(得分:2)

viewDidLoad仅在首次加载到内存时才被称为一个。

当您的应用从暂停状态恢复时,即使viewDidAppear也不会被调用。

您可以从applicationDidBecomeActive()中使用UIApplicationDelegate方法。

或者,您可以注册UIApplicationDidBecomeActiveNotification的观察者,以便在应用程序处于活动状态时调用doSomething

class ViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // Set up the observer
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(self.doSomething),
            name: .UIApplicationDidBecomeActiveNotification,
            object: nil)
    }

    override func viewWillDissapear(_ animated: Bool) {
        super.viewWillDissapear(animated)
        // Remove the observer
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(self.doSomething),
            name: .UIApplicationDidBecomeActiveNotification,
            object: nil)
    }

    @objc func doSomething(notification: NSNotification){     
        // do something
    }
}