2012-11-01 45 views
0

在UIViewControllers我有幾個方法,如viewDidLoad中viewWillAppear中viewDidAppear等 問題是:「什麼是最好的地方,例如,設置我的觀點的背景顏色,實例化,並設置一個UILabel的背景顏色,或者實例化一個對象,我在我的課之類的東西設置爲@財產?「哪裏是最好的地方...... [iPhone]

謝謝!

回答

2

這麼多問題一次!

第一次加載視圖時,在viewDidLoad中,您將可以訪問所有已初始化的UI元素,因此它是配置視圖和設置類屬性的好地方。

如果您回到視圖,如果它已經加載(例如,通過從導航控制器彈出視圖,或解散模態視圖控制器),viewDidLoad將不會被調用。因此,如果您想根據視圖控制器初始化後可能發生的事情來更改某些內容(背景,添加標籤,更改標籤的背景等),則必須使用viewWillAppear

如果您想爲更改設置動畫,以便用戶在視圖變爲可見狀態後可以看到該更改,您可以使用viewDidAppear

編輯:這是適用於如果您使用IB或故事板。請參閱CitronEvanescent針對您在代碼中創建視圖的情況的回答。

+0

當心,viewWillAppear在每次顯示視圖時被調用,例如。當你彈出另一個控制器後拉回控制器的視圖。考慮到你的更新和導航,它可能有點貴 – CitronEvanescent

+0

夠公平的。雖然不是爲了提到的事情。 – Mundi

0

如果您正在創建視圖programaticaly,您可以在- (void) loadView上設置您的屬性,在顯示任何內容之前,此方法將被調用一次。

通常我更喜歡實例化-(id) init中的UI元素並更新其loadView中的UI。

進一步的細節:View construction reference

+0

爲什麼在'init'中而不在'loadView'中實例化?有點擊敗'loadView' imho的目的。 – Rengers

+0

你可以做到這一點,這取決於你如何處理你的對象。不要忘記loadView被調用,如果視圖已被卸載(參考ios 5及更少的內存警告) – CitronEvanescent

0

的可行方法是viewDidLoad-(id)init,類的-(id)initWithNibName構造函數。 viewWillAppearviewDidAppear應該避免,因爲你不想一次又一次地實例化你的變量,因爲每次出現視圖時都會調用它們(從pop或tabSwitch)。這兩種方法在你想要改變某些變量重新出現時的值

相關問題