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

时间:2016-09-30 01:04:49

标签: ios iphone swift ios-simulator lifecycle

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

  1. 当我进入模拟器主屏幕然后回到应用程序时, 我希望调用viewDidLoad,但事实并非如此。

  2. 当我退出时 应用程序按照these directions,重新启动应用程序,我 期望调用这两种方法,但都不会被调用。

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

1 个答案:

答案 0 :(得分:3)

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

您想要的是注册以下通知

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
}

案例2:

如果您像指令一样退出应用程序,则会终止调试会话,因此断点和日志不起作用。如果您退出应用程序并希望检查断点或日志,则需要在Xcode中再次运行。