我的应用程序有一个 View Controller 和一个 View 。当我从 xcode 在模拟器上运行我的应用程序时,应用程序加载并且 viewDidLoad
、viewDidAppear
都按预期被调用。
当我转到模拟器主屏幕然后返回应用程序时, 我希望调用
viewDidLoad
,但实际上没有。当我退出 通过以下应用程序 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/