2012-02-02 89 views
7

在Matt Newburg編寫的iOS 4中,他指出: 「要爲UIViewController手動提供視圖,請實現其loadView方法...您不得調用超級」。應該從loadView中調用[super loadView]還是不是?

在Erica Sadun的iOS 5開發人員指導手冊中,她指出: 「loadView方法允許您設置屏幕和佈置任何子視圖....確保每當從專門用戶繼承時調用[super loadView]子類如UITableViewController或UITabBarController。「

這對我來說至少是令人困惑的。

回答

4

蘋果是真理的來源,他們說沒有超級電話。

如果重寫此方法,以手動創建你的意見,你 應該這樣做並分配層次的根視圖到 視圖屬性。 (您創建的視圖應該是唯一的實例,並且不應該與其他視圖控制器對象共享 )。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

[編輯]

在UIViewController類參考周圍散射另一個重要的注意事項:

默認的loadView方法嘗試從相關聯的筆尖 文件加載視圖與視圖控制器(如果有的話)。

+0

哎呦。出於某種原因,我認爲他們沒有具體說明。 – 2012-02-02 00:33:59

+0

我對此有個簡短的問題。我有AppDelegate並將它的rootView設置爲另一個UIViewController類實例(我在其中修改了loadView中的視圖)。如果我不調用[super loadView],則會調用三次該方法。如果我稱之爲,一切都是完美的。那麼我錯過了蘋果公司的文檔? 如果我不被允許做[超級loadView]我應該在哪裏設置我的視圖,如果我不加載視圖從筆尖? – andi1984 2012-02-05 16:30:00

+0

如果我將UINavigationController作爲rootViewController設置爲應用程序委託,並將UIViewController再次推送到navcontroller棧,那麼所有內容都是完美的。所以我不明白爲什麼會出現這些差異。 – andi1984 2012-02-05 16:37:03