在UIViewControllers我有幾個方法,如viewDidLoad中,viewWillAppear中,viewDidAppear等 問題是:「什麼是最好的地方,例如,設置我的觀點的背景顏色,實例化,並設置一個UILabel的背景顏色,或者實例化一個對象,我在我的課之類的東西設置爲@財產?「哪裏是最好的地方...... [iPhone]
謝謝!
在UIViewControllers我有幾個方法,如viewDidLoad中,viewWillAppear中,viewDidAppear等 問題是:「什麼是最好的地方,例如,設置我的觀點的背景顏色,實例化,並設置一個UILabel的背景顏色,或者實例化一個對象,我在我的課之類的東西設置爲@財產?「哪裏是最好的地方...... [iPhone]
謝謝!
這麼多問題一次!
第一次加載視圖時,在viewDidLoad
中,您將可以訪問所有已初始化的UI元素,因此它是配置視圖和設置類屬性的好地方。
如果您回到視圖,如果它已經加載(例如,通過從導航控制器彈出視圖,或解散模態視圖控制器),viewDidLoad
將不會被調用。因此,如果您想根據視圖控制器初始化後可能發生的事情來更改某些內容(背景,添加標籤,更改標籤的背景等),則必須使用viewWillAppear
。
如果您想爲更改設置動畫,以便用戶在視圖變爲可見狀態後可以看到該更改,您可以使用viewDidAppear
。
編輯:這是適用於如果您使用IB或故事板。請參閱CitronEvanescent針對您在代碼中創建視圖的情況的回答。
如果您正在創建視圖programaticaly,您可以在- (void) loadView
上設置您的屬性,在顯示任何內容之前,此方法將被調用一次。
通常我更喜歡實例化-(id) init
中的UI元素並更新其loadView
中的UI。
進一步的細節:View construction reference
爲什麼在'init'中而不在'loadView'中實例化?有點擊敗'loadView' imho的目的。 – Rengers
你可以做到這一點,這取決於你如何處理你的對象。不要忘記loadView被調用,如果視圖已被卸載(參考ios 5及更少的內存警告) – CitronEvanescent
的可行方法是viewDidLoad
或-(id)init
,類的-(id)initWithNibName
構造函數。 viewWillAppear
和viewDidAppear
應該避免,因爲你不想一次又一次地實例化你的變量,因爲每次出現視圖時都會調用它們(從pop或tabSwitch)。這兩種方法在你想要改變某些變量重新出現時的值
當心,viewWillAppear在每次顯示視圖時被調用,例如。當你彈出另一個控制器後拉回控制器的視圖。考慮到你的更新和導航,它可能有點貴 – CitronEvanescent
夠公平的。雖然不是爲了提到的事情。 – Mundi