【问题标题】:Will viewDidLoad be called if i press home button and launch the app after 5 seconds如果我按下主页按钮并在 5 秒后启动应用程序,将调用 viewDidLoad
【发布时间】:2018-10-26 08:10:49
【问题描述】:

我知道 viewDidLoad 在您的视图加载后被调用。它仅在视图初始化并推送或呈现时调用一次。

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

我基本上想在每次启动我的应用程序时运行一个代码。 我将如何实现这一目标?

【问题讨论】:

  • 您可以通过在 ViewDidLoad 中添加 print 来尝试。如果您想在每次启动应用程序时运行代码(从后台状态打开应用程序时),您可以在 AppDelegate 中的 applicationDidBecomeActive 调用它

标签: ios iphone swift4 viewdidload


【解决方案1】:

viewDidLoad 只会在第一次加载到内存时被调用。

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

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

或者,您可以为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
    }
}

【讨论】:

  • 知道了。谢谢
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多