我从我的viewWillAppear中调用了一些代码,这些代码依赖于根视图控制器的traitCollection有效。令我惊讶的是,即使在调用viewWillAppear时,UIApplication.sharedApplication.keyWindow.rootViewController在设置和调用makeKeyWindow很久之后仍为零。
为什么会这样呢?实际发生了什么?似乎有些合理的假设已不再是对的。

最佳答案

我假设您尚未在window方法上分配didFinishLaunchingWithOptions属性

如果您在App Delegate分配中没有window属性,它将被保留

您是否编写过类似的代码?

        self.window = UIWindow(frame: UIScreen.main.bounds)
        let mainVC = UIViewController()
        self.window?.rootViewController = mainVC
        self.window?.makeKeyAndVisible()


顺便说一下,keyWindow属性is now deprecated

尝试这个:

UIApplication.shared.windows.first({ $0.isKeyWindow })

关于ios - iOS:启动应用后,UIApplication.sharedApplication.keyWindow.rootViewController == nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58205790/

10-12 04:56