2015-11-15 33 views
0

我看到過許多類似的SO問題,並且據我所見,所有這些問題都表明我們不應該在當前視圖viewWillAppear時推送/彈出任何視圖未被調用或'isViewLoaded'調用返回false。在我的實例中,我嘗試在當前視圖'viewWillAppear'方法中推送一個新視圖,在我推送它之前,我還調用[self isViewLoaded]來查看當前視圖是否已加載(這是),但我仍然不斷收到上述錯誤。UIViewController的開始/結束外觀轉換的不平衡調用

我能夠解決這個問題(這是一個黑客)的唯一方法是睡眠幾秒鐘,然後再調用另一個非UI線程。

由於在調用實際進行推送工作之前睡了幾秒鐘,我認爲雖然'viewWillAppear'已經被調用並且[self isViewLoaded]爲true,但推動/彈出另一個視圖有時候還爲時過早(也許對動畫仍然不完整?)。

我我錯過了什麼?除了'viewWillAppear'或[self isViewLoaded]之外,還有其他一些方法可以指示%100視圖已經完全加載並且所有動畫都已完成,因此我可以安全地推送/彈出其他視圖?

回答

0

你可以試試viewDidAppear。

但是,在執行此操作時,您考慮過哪些場景/設計? IMO,這是一個糟糕的設計,立即從尚未加載的視圖中推送新的視圖控制器。

+0

謝謝你今天晚些時候會試試,並告訴你是否可行(現在需要離開)。我同意這不是最好的設計,但基本上當我實例化第一個視圖時,我也做了一個web服務調用並獲取一些數據。根據數據,我將保持相同的視圖或導航到不同的視圖。此時重構此流程不是一種選擇,除非一切都失敗。 – DarkAPI

+0

剛剛嘗試過你的建議,它的工作原理。謝謝。 – DarkAPI

相關問題