2011-03-02 87 views
11

viewDidLoad()LoadView()?它們以何種方式彼此不同?viewDidLoad(),LoadView()

當我們不使用XIB開發應用程序時,哪一個更好?

謝謝。

+0

請嘗試此鏈接http://stackoverflow.com/questions/573958/iphone-sdk-what-is-the-difference-between-loadview-and-viewdidload – visakh7 2011-03-02 05:56:34

回答

-3

如果您在不使用xibLoadView()方法被調用和開發應用程序,如果有一個廈門國際銀行則ViewDidLoad方法被稱爲

因此,最好是使用的loadView方法。

+9

這是不正確的。 ViewDidLoad對我來說無論如何 – MobileMon 2015-06-29 19:02:26

+0

但是當我在ViewDidLoad中編寫代碼時,它也可以工作!請解釋爲什麼這會起作用。 (我沒有使用任何故事板) – 2016-03-17 13:35:15

0

這不是很明顯嗎?

viewDidLoad被稱爲...當視圖完成加載。

loadView在視圖被告知加載時被調用。

兩者都不是好或壞。這完全取決於你的設計。

祝你好運:)

+1

沒有太多的答案。正如其他答案所述,它們的關鍵區別在於您是(a)使用xib/nib還是(b)以編程方式創建用戶界面。 – 2013-08-23 09:40:11

47

ViewDidLoad在您的視圖加載完成時調用,當加載開始時調用loadView

當你讓你看到的這些方法,明確給出了什麼時候應該使用哪些功能

小費評論一個新的項目看這

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
} 
*/ 


/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 
*/ 

這些意見是明確的,容易理解。

7

如果您打算使用IB來構建您的UI,則應該在viewDidLoad中執行所有後期IB初始化。如果您使用筆尖初始化控制器,則該類根本不會調用loadView。

如果在代碼中初始化控制器,viewController將首先調用loadView,然後調用viewDidLoad。您可以在loadView或viewDidLoad中執行所有初始化,具體取決於您的偏好。

但是,如果您決定使用loadView,請務必在嘗試讀取self.view之前設置視圖屬性,否則您將進入無限循環並崩潰。

+0

根據文檔,你不應該調用'[super loadView]';你應該自己設置'view'屬性 – user102008 2011-09-27 22:05:01

+0

修改我的答案。什麼UIViewController的loadView是初始化一個空白的視圖。我想這可能會浪費,如果用戶的實現取消超級設置的視圖,但它不會傷害。 – futureelite7 2011-09-30 08:00:58

0

如果沒有關聯nib,視圖控制器會加載與其關聯的nib的視圖,然後它會自動調用它的loadView()方法來填充它的View。 在這種情況下,您需要實現loadView()方法。 默認情況下它返回無

當你的視圖加載到內存viewDidLoad()方法在這裏被調用時,你可以根據你的要求做你的自定義初始化。

2

如果您從stroyboard或xib文件初始化視圖,請勿重寫此方法或調用[super loadView]裏面。 如果您在方法內部調用[super loadView],則最好不要重寫此方法,並將以下代碼放到viewDidLoad方法中。

如果你以編程方式初始化你的視圖,你應該永遠不要調用[super loadView]。您必須將您的rootView分配給self.view屬性,否則您可能會遇到完美的崩潰。

18
viewDidLoad() 

將在您從NIB加載視圖並希望在啓動後執行任何自定義時使用。

LoadView() 

用於以編程方式創建視圖(不使用Interface Builder)。

相關問題