我从我那里调用了一些代码,这些代码viewWillAppear
依赖于根视图控制器的 traitCollection 是否有效。令我惊讶的是,即使在 viewWillAppear 被调用时,UIApplication.sharedApplication.keyWindow.rootViewController
它仍然是 nil,在它被设置makeKeyWindow
并被调用很久之后。为什么会这样?究竟发生了什么?似乎一些合理的假设不再是正确的。
问问题
1370 次
2 回答
2
启示是,不仅 keyWindow 已被弃用,而且实际上在分配 window 并调用 viewWillAppear 之后,它实际上不起作用并返回 nil。
因此,改为:
UIViewController *vc = UIApplication.sharedApplication.windows.firstObject.rootViewController;
于 2019-10-02T17:54:41.430 回答
0
我假设您没有在方法上分配window
属性didFinishLaunchingWithOptions
如果您在 App Delegate 分配中没有窗口属性,它将被保留
你有写过类似的代码吗?
self.window = UIWindow(frame: UIScreen.main.bounds)
let mainVC = UIViewController()
self.window?.rootViewController = mainVC
self.window?.makeKeyAndVisible()
顺便说一句,现在不推荐使用keyWindow
属性
尝试这个:
UIApplication.shared.windows.first({ $0.isKeyWindow })
于 2019-10-02T17:12:56.157 回答