ios的檢視控制器的viewWillAppear和viewDidAppear什麼時候被呼叫
翻譯自: http://stackoverflow.com/questions/5277940/why-does-viewwillappear-not-get-called-when-an-app-comes-back-from-the-backgroun
viewWillAppear和viewDidAppear什麼時候被呼叫
問:
當我向一個UINavigationController壓入一個檢視控制器的時候,
1. 什麼時候會觸發viewWillAppear和viewDidAppear?
2. 什麼導致了觸發viewWillAppear和viewDidAppear失敗?
答:
當你呼叫pushViewController:animated把一個檢視控制器壓入UINavigationController的時候,UINavigationController會自動呼叫這些方法。相似的,當你tabs時,UITabBarController會直接呼叫這些方法,當你使用presentModalViewController時也會呼叫方法。當一個檢視控制器的檢視被新增到一個window中時也會呼叫這些方法。我在這些情況下沒有遇到過這些方法呼叫失敗的情況。
記住,這些方法只在這些特定的情況下控制器pushed或presented的時候被呼叫。在其它的情況下不會被呼叫,比如你新增你的檢視控制器的檢視作為一個檢視的子檢視而不是作為window的子檢視。蘋果官方文件說檢視控制器僅用於全屏顯示的檢視,典型的是使用上面提到的方法。可以忽略蘋果的建議使一個檢視控制器關聯另一個檢視控制的的檢視作為子檢視,但是你需要在作為容器的檢視控制器中手動的呼叫巢狀控制器的viewWillAppear和viewDidAppear。