我惊讶地发现,在 didFinishLaunchingWithOptions
中,对 [UIApplication sharedApplication].keyWindow.rootViewController
的调用返回 nil
。
我想在应用程序启动时设置一些东西,我需要引用 rvc,但是这种行为意味着我必须在其他地方做。
如果无法在 didFinishLaunchingWithOptions
中完成,那么唯一的其他选择是 applicationDidBecomeActive
?但是,由于必须有一个标志来确保设置步骤只发生一次而不是每次 appliationDidBecomeActive
被调用。
还有其他地方可以在应用启动时访问 rootViewController
来一次性设置额外的步骤吗?
最佳答案
此时应用程序生命周期中不存在 keyWindow
,因此没有 rootViewController
访问 keyWindow
的原因是因为keyWindow
是nil
。但是应用程序委托(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/