2011-11-12 43 views
1

這對我來說是一個天真的問題,但我在我的視圖控制器中有一些變量,我不知道我應該在哪裏初始化它們。我的意思是,如果這是一個自定義類,那麼通常我會初始化並在init方法或自定義的initWith方法中給它們賦值。初始化View Controller變量?

,從上述幹另外的問題是:

凡爲視圖控制器init方法。而且,由於View Controller本質上是一個類,必須在某個地方使用alloc-init。 View Controller的實例究竟在哪裏創建?

謝謝了,

帕裏賈特卡利亞

回答

7

在正確的位置初始化變量是視圖控制器非常重要。有四個地方可以這樣做:

1)initWithNibName:bundle: 這實際上是視圖控制器的構造函數。調用[[MyViewController alloc] init]實際上最終調用[[MyViewController alloc] initWithNibName:nil bundle:nil],這表示您使用的是默認的nib名稱。

2)awakeFromNib 當從筆尖完全實例化視圖控制器,initWithNibName:束:不叫,因爲你沒有創建一個新的視圖控制器,而是反序列化已經存在。在這種情況下,awakeFromNib在反序列化之後被調用。

initWithNibName:bundle和awakeFromNib是初始化變量的好地方,這些變量在視圖控制器的整個生命週期中只創建一次,並且與任何視圖都不相關我喜歡在名爲「setup」的函數中初始化這些變量並調用[self setup ]來自initWithNibName:bundle和awakeFromNib。

3)viewDidLoad 視圖加載完成後調用。初始化與您的觀點相關的東西的好地方。

4)viewWillAppear:animated 當視圖即將變爲可見時調用。子視圖的尺寸(即邊界,框架,位置等)僅適用於此功能,因此您需要在此處初始化依賴於這些量的變量,而不是上述任一方法。

+0

viewDidLoad中的初始化變量 - 沒有工作 –

+0

在awakeFromNib中的初始化變量 - 沒有工作 mine是一個NIB創建的視圖,並且是一個基於視圖的應用程序,更多的線索,感謝您的幫助! –

+0

你究竟想要初始化什麼?另外,當你說「沒有工作」時,你是什麼意思? –