2013-06-26 75 views
0

我在iPad上的安裝程序是處理應用程序主要內容的UISplitViewController。這被設置爲UIWindow的rootViewController。UIViewController dismissViewControllerAnimated:完成:導致應用程序凍結

當應用程序啓動時,我測試以查看用戶是否能夠登錄到Web服務。如果用戶無法訪問Web服務,則會向用戶提供處理認證的UIViewController子類。 [splitViewController dismissViewControllerAnimated:YES completion:nil];

使用顯示應用程序(http://revealapp.com)我能看到splitViewController: [splitViewController presentViewController:loginViewController animated:YES completion:nil];

當用戶成功登錄後,loginViewController通過調用辭退:在UIViewController子類是通過調用模態呈現現在正以模態方式呈現,而不是如預期那樣。

由於splitViewController以模態方式呈現,它現在不接受來自用戶的任何輸入。

有沒有人遇到過這種情況,並能夠幫助我。

UPDATE:

的問題看起來是與登錄正在嘗試時被提出了UIAlertView中做。這出現在用戶點擊「登錄」和登錄驗證之間。有誰知道爲什麼/如何導致問題? UIAlertView沒有被正確解僱或者LoginViewController沒有被解僱。

謝謝,

馬特。

+1

確保您駁回主線程視圖控制器。特別是因爲你是一個身份驗證請求響應,如果你是從一個回調方法,你可能不會,它可能會導致各種奇怪的問題.... – lnafziger

+0

將它放在一個dispatch_async(dispatch_get_main_thread(),^{});塊。 –

+0

儘管控件未返回到splitViewController,但該視圖已被解除。 –

回答

0

我想你想要的是:中

[loginViewController dismissViewControllerAnimated:YES completion:nil]; 

代替

[splitViewController dismissViewControllerAnimated:YES completion:nil]; 
+0

從關於UIViewController和dismissViewControllerAnimated的蘋果文檔:完成: - - 呈現視圖控制器負責解除其呈現的視圖控制器。如果您在呈現的視圖控制器本身上調用此方法,它會自動將該消息轉發給呈現視圖控制器。 –

相關問題