一個相當基本的問題,我不確定。我通常會建立我UIViewController
的觀點相關的代碼在viewDidLoad
。如果控制器具有標籤等的一些屬性,這是我將初始化它們並將它們添加到視圖中的位置。這些屬性通常在.m中聲明,因此可以被認爲是僞私有的。在哪裏設置屬性在UIViewController中
但是,如果控制器在其頭文件中公開了其中一個屬性(假設爲UILabel
),我發現在設置它時不能依賴它。例如:
CustomViewController *controller = [CustomViewController alloc] initWithNibName:nil bundle:nil];
controller.someLabel.text = @"label text goes here";
//then comes the presentation code
我發現,我設置標籤的文本太早 - viewDidLoad
還沒有啓動這樣的標籤是零。
,我應該init
創建此標籤,並在viewDidLoad
增加嗎?我應該盡我所有在init
?或者,也許所有的視圖屬性的初始化?或者根據具體情況對其進行判斷?
或者,也許根本原因是,我不應該有一個控制器暴露一個視圖(標籤),並使用一些其他的模式?
我正在尋找一個一致的方法來組織我的代碼。
如果它是由時間的viewDidLoad大火做好準備,那麼這將是罰款,因爲是viewDidLoad中發生之前將其設置在初始化。 – Jeremy
是的,我只是偶爾以某種方式做這件事,而在其他時候以另一種方式做。猜猜我應該更務實。 –
你會在哪裏試圖打電話給你的代碼?從另一個控制器?如果是這樣,您需要將該字符串傳遞給CustomController中的字符串屬性,並讓它將標籤的文本設置爲viewDidLoad。從MVC的角度來看,讓控制器填充自己的用戶界面更好,因此傳遞數據需要做的是正確的方式。 – rdelmar