首页 > 解决方案 > iOS:应用启动后,UIApplication.sharedApplication.keyWindow.rootViewController==nil

问题描述

我从我那里调用了一些代码,这些代码viewWillAppear依赖于根视图控制器的 traitCollection 是否有效。令我惊讶的是,即使在 viewWillAppear 被调用时,UIApplication.sharedApplication.keyWindow.rootViewController它仍然是 nil,在它被设置makeKeyWindow并被调用很久之后。为什么会这样?究竟发生了什么?似乎一些合理的假设不再是正确的。

标签: iosuiviewcontrollerappdelegateuitraitcollection

解决方案


启示是,不仅 keyWindow 已被弃用,而且实际上在分配 window 并调用 viewWillAppear 之后,它实际上不起作用并返回 nil。

因此,改为:

    UIViewController *vc = UIApplication.sharedApplication.windows.firstObject.rootViewController;

推荐阅读