ios 模拟器 viewDidLoad、viewDidAppear 在关闭或退出后未调用

ios simulator viewDidLoad, viewDidAppear not called after close or quit

我的应用程序有一个视图控制器和一个视图。当我从 xcode 在模拟器上 运行 我的应用程序时,应用程序加载并按预期调用 viewDidLoadviewDidAppear

  1. 当我转到模拟器主屏幕然后返回应用程序时, 我希望 viewDidLoad 被调用,但实际上没有。

  2. 当我退出 关注 these directions 应用程序,然后重新启动应用程序,我 希望这两种方法都被调用,但都没有被调用。

如果这些事件没有触发那些调用,那么什么会触发这些调用? 很难相信在真实设备上,viewDidLoad 只被调用一次 - 第一次加载应用程序时。

它说 "load"。它的字面意思是在加载(实例化)视图控制器时调用它。当视图出现时也会调用 "appear",就像您按下它或关闭其上方的其他视图控制器时一样。

你想要的是注册以下通知

static let UIApplicationWillEnterForeground: NSNotification.Name
static let UIApplicationDidEnterBackground: NSNotification.Name
static let UIApplicationDidBecomeActive: NSNotification.Name

在您的视图控制器的 viewDidLoad() 中添加通知。

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)

然后当应用程序从后台再次激活时将调用以下方法。

func applicationDidBecomeActive() {
    // Update your view controller
}

案例二:

如果您按照说明退出应用程序,调试会话将终止,因此断点和日志将不起作用。如果您退出您的应用程序并想要检查断点或日志,您需要在 Xcode.

中再次点击 运行