gpt4 book ai didi

ios - 如何正确处理 nil UIApplication.sharedApplication().keyWindow

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:27 26 4
gpt4 key购买 nike

viewDidLoad 被调用时, View 应该被加载。

但我总是在 UIApplication.sharedApplication().keyWindow 为 nil 时崩溃...

我应该把我的代码放在哪里,以便在加载 View 后调用它,而不是每次用户返回时调用它(出于这个原因,我已经排除了 viewWillAppear)?

最佳答案

情况 1: - 在 App 的委托(delegate)中手动创建 UIWindow

在将其设置为键之前,您可能以某种方式将 UIViewController 添加到 UIWindow 中。

您应该在创建窗口后在应用的委托(delegate)中调用 window.makeKeyAndVisible()

情况 2: - 自动 Storyboard实例化

系统读取您的 Storyboard,初始化 Root View Controller ,通过调用 viewDidLoadviewWillAppear 进行准备,将其添加到窗口并显示窗口。

发生的事情是系统不能只是将窗口设置在前面并将 View Controller 动画化到它上面,因为它是第一个 View Controller 并且您不是推/弹出导航 Controller 。 viewDidLoad 可能需要一些时间...因此 Default.png 会同时显示,直到 View Controller 准备就绪。

然后在它实际出现时调用 viewDidAppear。所以这就是您应该能够访问keyWindow

的地方

情况三:

您处于一种奇怪的情况,您有窗口,但目前没有一个是“关键”窗口,但您迫切需要访问该窗口。

调用UIApplication.sharedApplication().windows,看是否不为空,取第一个元素。 UIApplication.sharedApplication().delegate?.window 也可能有一个值,但通常只有当窗口已经是 key 时才会有。

关于ios - 如何正确处理 nil UIApplication.sharedApplication().keyWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com