4 回答
TA贡献1811条经验 获得超6个赞
如果您已经在应用程序委托中设置了self.window的rootViewController,并且在运行时仍收到此错误,则您的UIApplication中可能有多个窗口,其中一个窗口可能没有与rootViewController相关联。您可以循环浏览应用程序窗口,并将空的viewController与其rootViewController关联,以解决您遇到的错误。
这是一个循环遍历应用程序窗口的代码,如果缺少窗口,则将一个空的ViewController与rootViewController关联。
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow *window in windows) {
NSLog(@"window: %@",window.description);
if(window.rootViewController == nil){
UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
window.rootViewController = vc;
}
}
更新:显然有一个专门用于状态栏的窗口,通常会导致此问题。上面的代码应解决此错误。
TA贡献1853条经验 获得超6个赞
XCODE 7要求所有Windows必须具有rootViewController您可以使用easy:
UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
self.window.rootViewController = vc;
如果您只需要使用UIWindow(对于任何教程的简单示例-Xcode 7之前的版本),则效果很好!
TA贡献1865条经验 获得超7个赞
从iOS 9.1(?)或Xcode 7.1 开始,在离开该方法之前,任何UIWindow实例化的实例都 application(_:didFinishLaunchingWithOptions:)需要具有一个rootViewControllerset。
以前,rootViewController在该方法期间仅主窗口具有一个集就足够了。现在,任何UIWindow实例都需要具有有效的rootViewController属性。
如果您使用此代码UIWindow以及UIWindow在此期间尝试初始化新实例的任何其他第三方库(例如状态栏消息覆盖等),则可能是您自己的代码。
注意:如果未rootViewControler在主窗口中设置或情节提要板设置不正确,也会收到相同的错误。提及这一点作为旁注,因为这些案例非常明显且易于解决。
- 4 回答
- 0 关注
- 715 浏览
添加回答
举报