2011-10-17 65 views
3

我在iOS 5.0上面臨自定義視圖控制器子類的奇怪行爲。我沒有在iPad應用程序中使用標準導航控制器等,但是我自己提供了所有視圖控制器 - 這就是爲什麼我需要手動調用-viewWillAppear和viewDidAppear方法。iOS 5.0查看生命週期問題

從iOS 5.0開始,將視圖控制器的視圖作爲子視圖添加時,這些方法在視圖的視圖控制器實例上自動調用。這意味着這些方法在我的情況下被調用兩次。

有什麼建議嗎?除了創建我自己的視圖生命週期方法和重寫整個應用程序?

非常感謝!

回答

6

以下添加到您的UIViewController來禁用這些-viewWill ...和... -viewDid方法自動呼叫:

-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { 
    return NO; 
} 

這將迫使的iOS 5.0停止添加子視圖時調用這些方法,並且不會破壞iOS 4.x的任何功能。只要我繼續支持iOS 4.x上的設備,我就會使用這種方法。一旦我放棄對iOS 4的支持,我將重構我的代碼以使用交換視圖控制器的新方法(如hypercrypt發佈的會話102視頻中所述)。