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

标签 ios iphone swift ios-simulator lifecycle

我的应用程序有一个 View Controller 和一个 View 。当我从 xcode 在模拟器上运行我的应用程序时,应用程序加载并且 viewDidLoadviewDidAppear 都按预期被调用。

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

  2. 当我退出 通过以下应用程序 these directions ,然后重新启动应用程序,我 期望这两个方法都被调用,但都没有被调用。

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

最佳答案

它说“加载”。它的字面意思是在加载(实例化) View Controller 时调用它。当 View 出现时也会调用“出现”,就像您按下它或关闭其上方的其他 View Controller 时一样。

你想要的是注册以下通知

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

在您的 View Controller 的 viewDidLoad() 中添加通知。

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

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

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

案例二:

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

关于ios 模拟器 viewDidLoad,viewDidAppear 在关闭或退出后未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782167/

相关文章:

ios - 在 tableViewCell 中添加 Webview

ios - 在 UIWebView 中显示授权提示

ios - 为什么我收到错误 'Type ViewController does not conform to protocol UIPageViewControllerDataSource'?

c# - iOS Row Selected 未被调用

ios - 将 UIView 坐标从纵向转换为横向,反之亦然

html - 如何通过 html 链接预填充短信正文

iphone - html5 视频不能在 ipad 模拟器中播放?

iOS - 如何创建条纹图像?

iphone - 是什么导致了这个 iPhone 崩溃日志?

iphone - iPhone 上的额外右边距