2012-05-01 99 views

回答

4

首先,當您覆蓋loadView時,要手動創建您自己的視圖,您應該調用超類的實現NOT。這是因爲您將手動創建視圖,並使用這些而不是視圖,該視圖將由UIViewController的實現創建。 (見loadviewdocumentation。)

但是當你重寫viewDidLoad,你的確應該調用父類的實現。這是因爲UIViewController的實現viewDidLoad做了一些內部簿記,所以你想運行你自定義的viewDidLoad代碼除了之外還有超類。

+0

但即使在使用loadView時,我們也需要重寫超類。你提到過我們不需要重載loadView方法。你能解釋爲什麼嗎? @yuji –

+0

呵呵??我沒有說「我們不[原文如此]需要重寫loadView方法。」我說**如果你在一個子類中實現'loadView',那麼你可能不需要調用超類的實現。請閱讀我鏈接到的文檔以獲取詳細信息。 – yuji

+0

謝謝yuji .... –

3

它從您的超類中調用該方法。讓我們說它的NSObject。這些方法的名稱解釋如下: loadView是加載視圖的NSObject方法,viewDidLoad是處理視圖已加​​載的NSObject方法...沿着這些行 該視圖控制器中的方法本身「viewDidLoad」,也許「的loadView」沒有代碼,做上述...它只是定製,因爲你不能修改原始的.m方法...

要找出你的超去.h文件中:

@interface MyViewController : MySuperClass //thats it! 
2

在你開始把UI放在它之前,底層類需要做一些自己的記賬工作。在Android中,相應的應用程序實際上會通過拋出一個你沒有叫的超優先例外來故意崩潰。

相關問題