我在我的應用程序中需要通過unwind segue關閉模態視圖控制器,然後在呈現不同的模式視圖控制器後出現情況。要做到這一點,我只是拖延了電話,以1.0秒的時間呈現新的視圖控制器。這可能無法一直工作,也許如果由於某種原因需要花費較長時間才能解決問題,則第二個視圖控制器將無法顯示,因爲正在進行轉換。我遇到了這種情況,雖然在這種情況下它確實起作用。這已記錄:如何在當前演示文稿完成後執行segue
警告:試圖在演示文稿正在進行時呈現!
我正在尋找更好的解決方案。我想知道是否有可能拋出新的視圖控制器後,第一個完全解散,通過回調,但沒有performSegueWithIdentifier
有一個完成塊。
如何解除模態視圖控制器然後提出一個新的視圖控制器,始終確保不會發生衝突?
這是我目前的解決方案:
[self performSegueWithIdentifier:@"Unwind Segue" sender:self]; //dismiss modal or pushed VC
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[tabBarController performSegueWithIdentifier:@"Show New VC" sender:self]; //present new modal VC
});
爲什麼不從當前的控制器中提出新的模態控制器,而不是首先展開?放開然後立即呈現另一個的目的是什麼? – rdelmar
我放開回到標籤欄可見的位置,然後執行segue,因爲該segue僅爲「tabBarController」定義。這是一個有很多屏幕的複雜應用程序,我不希望爲每個視圖控制器中的視圖控制器創建一個segue。此外,實際上希望回到這種情況下的「主頁面」。 – Joey
我認爲你應該可以調用你正在展開的控制器的viewDidAppear方法中的performSegue。你可以在unwind方法中設置一個標誌,並檢查viewDidAppear是否知道你是否應該執行執行。 – rdelmar