簡體   English   中英

在iOS 9中設置UIWindow rootViewController后,iOS應用程序崩潰

[英]iOS app crashing after setting UIWindow rootViewController in iOS 9

在iOS 9上運行之前,我的應用程序運行良好。

在AppDelegate中,我檢查用戶是否已登錄。 如果未登錄,則將它們發送到登錄屏幕,並顯示以下行:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Login"];

用戶登錄后,我嘗試通過以下行將其發送到主應用程序:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Tabs"];

這在iOS 8中有效,但現在使應用程序崩潰。 這是一次嚴重的崩潰。 整個設備必須重啟(盡管這是非常快的,所以我認為它更像是重啟SpringBoard之類的東西)。

對於第一行為何有效而第二行無效的原因,我感到很茫然。 任何幫助深表感謝!

編輯

我最終重新創建了崩潰的整個UIViewController流,現在可以正常工作了。 據我所知,這是新Xcode中的一個奇怪的錯誤。 沒有考慮到這個答案,因此,如果有人有真正的答案,請隨時分享。

不知道為什么,但這在iOS9中對我有效。 可能是您在嘗試正確加載窗口之前已經在AppDelegate中嘗試執行此操作了嗎?

我在情節提要中擁有第一個ViewController,然后將其重定向到那里。

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"Storyboard"
                                                          bundle: nil] instantiateViewControllerWithIdentifier:@"viewController"];

[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController];

設置根視圖控制器的代碼可在iOS9中正常運行。

[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController];

如果您在那行崩潰,那肯定意味着viewController初始化邏輯或其任何子視圖在某個時候拋出。

問題是,在模擬器中工作時,應用程序將崩潰,並且輸出中沒有錯誤。 最好的做法是在viewController邏輯中設置一個斷點(即: viewDidLoad ),然后檢查導致錯誤的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM