2012-12-11 56 views
-1

「viewWillAppear」在iphone 4.3仿真器中未在xcode 4.5中調用,但如果它在iPhone 5.0或iPhone 6.0仿真器中運行,則會調用此方法。「viewWillAppear」在iPhone 4.3仿真器中未調用xcode 4.5

爲什麼?如果我想要在控制器的視圖出現在ios 4.3中時執行某些操作,我該怎麼辦?

+0

什麼動作導致視圖出現? – Tommy

+0

我使用「pushViewController」,所以視圖將會出現。 – Sing

+0

而且是以模態方式呈現的'UINavigationController',或者是根視圖控制器?我試圖消除的是你可能試圖在正式實施之前使用子視圖控制器。 – Tommy

回答

1

我認爲這可能與「查看控制器濫權」正確移動。檢查您的容器視圖控制器是否正確使用。詳情請參閱this post

1

根據您的意見,問題似乎是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:,以確保所有的信息在各個方向