ios - iOS:应用启动后,UIApplication.sharedApplication.keyWindow.rootViewController==nil
问题描述
我从我那里调用了一些代码,这些代码viewWillAppear
依赖于根视图控制器的 traitCollection 是否有效。令我惊讶的是,即使在 viewWillAppear 被调用时,UIApplication.sharedApplication.keyWindow.rootViewController
它仍然是 nil,在它被设置makeKeyWindow
并被调用很久之后。为什么会这样?究竟发生了什么?似乎一些合理的假设不再是正确的。
解决方案
启示是,不仅 keyWindow 已被弃用,而且实际上在分配 window 并调用 viewWillAppear 之后,它实际上不起作用并返回 nil。
因此,改为:
UIViewController *vc = UIApplication.sharedApplication.windows.firstObject.rootViewController;
推荐阅读
- javascript - 使用自定义用户代理重定向网页
- c - 在 C 中,我如何知道字符串 char 是否具有特定值?
- webhooks - 气流上 Teams webhook 的连接设置出现一般错误
- html - 如何使用 html 和 CSS 创建“盾牌”形状
- android - 使用 react-native 和 selenium 执行任务 ':app:mergeDebugJavaResource' 失败
- vb.net - Winform Datagridview 工程符号
- javascript - (Canvas, next.js)) 使用canvas生成某种颜色的照片发回*无需下载*
- javascript - 我可以修改 web 应用程序以使 Chrome 不认为聊天输入是密码字段吗?
- javascript - Javascript函数:减少助手的冗余
- mysql - 在比较中使用 concat 会返回所有内容