我的application(_:didFinishLaunchingWithOptions:)
方法中有以下代码
self.window = self.window ?? UIWindow()
self.window?.makeKeyAndVisible()
let mainViewController = HomeViewController.instantiate() //here I just call the viewController through storyboard, set some properties and return its instance
window?.rootViewController = mainViewController
我检查过,将viewController
添加到window
时调用的唯一生命周期事件是:
viewDidLoad
viewWillLayoutSubviews
viewDidLayoutSubviews
此后的任何内容都不会被调用(仅当它最初添加到window
中之后才发生,然后才按照预期方式调用事件)。还没有设置“安全布局指南”(我相信其他视图属性也是如此)。为了绕过此问题,我执行以下操作:
window?.rootViewController = UIViewController()
然后
window?.rootViewController = mainViewController
这似乎以某种方式迫使窗口在第二次设置其根视图控制器时正常工作。
但是似乎我缺少某些东西,或者存在某种生命周期问题。
有人遇到相同的问题并找到了根本原因吗?
答案 0 :(得分:5)
设置窗口的根视图控制器后,尝试在最后显示窗口键和“可见”。
self.window = self.window ?? UIWindow()
let mainViewController = HomeViewController.instantiate()
window?.rootViewController = mainViewController
self.window?.makeKeyAndVisible()