「viewWillAppear」在iphone 4.3仿真器中未在xcode 4.5中調用,但如果它在iPhone 5.0或iPhone 6.0仿真器中運行,則會調用此方法。「viewWillAppear」在iPhone 4.3仿真器中未調用xcode 4.5
爲什麼?如果我想要在控制器的視圖出現在ios 4.3中時執行某些操作,我該怎麼辦?
「viewWillAppear」在iphone 4.3仿真器中未在xcode 4.5中調用,但如果它在iPhone 5.0或iPhone 6.0仿真器中運行,則會調用此方法。「viewWillAppear」在iPhone 4.3仿真器中未調用xcode 4.5
爲什麼?如果我想要在控制器的視圖出現在ios 4.3中時執行某些操作,我該怎麼辦?
我認爲這可能與「查看控制器濫權」正確移動。檢查您的容器視圖控制器是否正確使用。詳情請參閱this post。
根據您的意見,問題似乎是iOS 4中缺少容器視圖控制器。從5+開始,您顯然意味着可以將任何控制器的view
添加到任何其他*並且,將產生相應的view[Will/Did]Appear
,與所有其他新的消息一起 - 你沒有明確允許建集裝箱視圖控制器viewDidLayoutSubviews
等
4並有連接視圖背面沒有刻意的,具體的向後鏈接到其控制器。
因此,將導航控制器添加到視圖時,它不會得到viewDidAppear
。因爲它不知道它的視圖已經出現,所以它不會告訴它包含的任何控制器它們的視圖已經出現。
也許你能做的最好的事情就是通過(i)檢查你是否在iOS 4下運行;和(ii)如果是這樣,將假人viewWillAppear/viewDidAppear/viewWillDisappear/viewDidDisappear
張貼到您的控制器中。
基於個人經驗,iOS 4(至少在4.3)實際上實現了addChildViewController:
,但不是做後面的記錄版本。因此,儘管它不是一個完全準確的功能檢查,我傾向於使用if([self respondsToSelector:@selector(presentingViewController)])
來確定是否需要手動傳播這些消息。
[*]你也應該調用addChildViewController:
,以確保所有的信息在各個方向
什麼動作導致視圖出現? – Tommy
我使用「pushViewController」,所以視圖將會出現。 – Sing
而且是以模態方式呈現的'UINavigationController',或者是根視圖控制器?我試圖消除的是你可能試圖在正式實施之前使用子視圖控制器。 – Tommy