ios - 使用 Storyboard时,操作系统何时设置 rootViewController?

标签 ios lifecycle

我惊讶地发现,在 didFinishLaunchingWithOptions 中,对 [UIApplication sharedApplication].keyWindow.rootViewController 的调用返回 nil

我想在应用程序启动时设置一些东西,我需要引用 rvc,但是这种行为意味着我必须在其他地方做。 如果无法在 didFinishLaunchingWithOptions 中完成,那么唯一的其他选择是 applicationDidBecomeActive?但是,由于必须有一个标志来确保设置步骤只发生一次而不是每次 appliationDidBecomeActive 被调用。

还有其他地方可以在应用启动时访问 rootViewController 来一次性设置额外的步骤吗?

最佳答案

此时应用程序生命周期中不存在 keyWindow,因此没有 rootViewController 访问 keyWindow 的原因是因为keyWindownil。但是应用程序委托(delegate)有一个适用于您的 window 的属性,因此您只需获取 self.window.rootViewController

但是,如果您始终具有相同的 Root View Controller ,则您可能可以在 Root View Controller 的 viewDidLoad 方法中至少执行一些您想要执行的操作(也许是全部)。这通常应该只被调用一次,因为在 iOS 6 及更高版本中,你的屏幕外 View Controller 的 View 永远不会被卸载。

关于ios - 使用 Storyboard时,操作系统何时设置 rootViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762394/

相关文章:

ios - UITableViewController 和 UICollectionViewController 的 .view 属性

iphone - Cocos2d iOS : Why doesn't my CCMenuItemImage respond to touch events?

ios - 由于核心数据迁移,应用程序在从应用程序商店更新后崩溃

java - 具有绑定(bind)服务的 Activity 生命周期

android - 旋转屏幕时夜间模式错误

android - 让我的 Android 应用程序正常运行,即使用户导航离开它也是如此。我怎么做?

ios - 如何从 IOS 中的 UICollectionViewCell 初始化弹出 View

ios - 将 View 数加载到 UIScrollView 时由于内存错误而终止

android - 某些设备上的 CameraX 黑屏预览

javascript - React 在我的组件实际拥有数据之前渲染它