2014-03-19 55 views
1

我的故事板具有:NavigationController - >的UIViewController 1 - >的UIViewController 2 - >的UIViewController 3 - >的UITabBarController - >四個UIViewControllers(A,B,C,d)iOS恢復 - 爲什麼在恢復之前顯示另一個視圖?

我添加恢復支持的應用程序。我已經將它添加到UIViewController#1和#3,現在將它添加到UITabBarController下的UIViewController'c'。

當我顯示UIViewController'c'時使用Xcode殺死我的應用程序,然後再次啓動應用程序時,viewcontroller的方法被正確調用,並且其UITextFields的內容被正確恢復。

但在放置斷點「c」的視圖控制器I可以看到的UIViewController 3被臨時顯示。它的viewDidLoad和viewWillAppear:方法被調用。

通常會顯示什麼的UIViewController#3的原因是什麼?

我已經按下了爲我的UIViewControllers實施恢復,並且從終端用戶的角度看來沒有任何負面影響 - 沒有斷點,顯示屏沒有機會更新以顯示中間視圖。

+0

什麼都沒有與我的查詢,而是一個關於這個問題做出的小修改查詢做。是否將英文縮寫「I'm」擴展爲「I am」,是因爲認爲那些難以閱讀英文的人將無法理解縮寫? – Carl

+0

對不起@佐丹奴-Scalzo的我inadvertedly回滾你的小修改(我試圖最鏈接查找到您發送消息的路由)。 – Carl

回答

2

這就是瀏覽器修復。該應用程序從頭開始;要到達在終止時顯示的視圖控制器,應用程序將視圖控制器創建序列從根視圖控制器向下拖到要顯示給用戶的視圖控制器。它不可能以其他方式發生。 (畢竟,如果VC2的後退按鈕是導致VC1,然後VC2必須高於VC1在導航控制器堆棧。)而你不希望它發生,因爲你可能有重要的工作要做的序列被重建。通過在恢復過程中設置斷點,你已經揭示了「幕後的男人」。但用戶沒有看到該過程(它由啓動圖像覆蓋),所以沒有問題。

尤其重要的是,viewDidLoad在創建鏈中以正確的順序被調用,並且這在所有視圖控制器被髮送之前都會發生。 (但是,你不應該指望什麼與viewWillAppear:及其堂兄弟有任何關係,這些可能或可能不會被調用,你不能確定什麼時候發生,我認爲這種不一致/不可預測的時機的viewWillAppear:作爲一個bug,但蘋果,不幸的是,沒有。)