4 回答

TA貢獻1811條經(jīng)驗 獲得超6個贊
如果您已經(jīng)在應用程序委托中設置了self.window的rootViewController,并且在運行時仍收到此錯誤,則您的UIApplication中可能有多個窗口,其中一個窗口可能沒有與rootViewController相關聯(lián)。您可以循環(huán)瀏覽應用程序窗口,并將空的viewController與其rootViewController關聯(lián),以解決您遇到的錯誤。
這是一個循環(huán)遍歷應用程序窗口的代碼,如果缺少窗口,則將一個空的ViewController與rootViewController關聯(lián)。
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;
}
}
更新:顯然有一個專門用于狀態(tài)欄的窗口,通常會導致此問題。上面的代碼應解決此錯誤。

TA貢獻1853條經(jīng)驗 獲得超6個贊
XCODE 7要求所有Windows必須具有rootViewController您可以使用easy:
UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
self.window.rootViewController = vc;
如果您只需要使用UIWindow(對于任何教程的簡單示例-Xcode 7之前的版本),則效果很好!

TA貢獻1865條經(jīng)驗 獲得超7個贊
從iOS 9.1(?)或Xcode 7.1 開始,在離開該方法之前,任何UIWindow實例化的實例都 application(_:didFinishLaunchingWithOptions:)需要具有一個rootViewControllerset。
以前,rootViewController在該方法期間僅主窗口具有一個集就足夠了?,F(xiàn)在,任何UIWindow實例都需要具有有效的rootViewController屬性。
如果您使用此代碼UIWindow以及UIWindow在此期間嘗試初始化新實例的任何其他第三方庫(例如狀態(tài)欄消息覆蓋等),則可能是您自己的代碼。
注意:如果未rootViewControler在主窗口中設置或情節(jié)提要板設置不正確,也會收到相同的錯誤。提及這一點作為旁注,因為這些案例非常明顯且易于解決。
- 4 回答
- 0 關注
- 750 瀏覽
添加回答
舉報