一个相当基本的问题,我不确定。我通常会建立我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