哪里是最好的地方... [iPhone]

时间:2012-11-01 14:08:14

标签: iphone objective-c instantiation viewdidload

在UIViewControllers中,我有几种方法,例如 viewDidLoad viewWillAppear viewDidAppear 等。 问题是:“最好的地方是什么,例如,设置我的视图的背景颜色,实例化,并设置UILabel的背景颜色,或实例化我在我的类中设置为@property的对象和类似的东西那个?“

谢谢!

3 个答案:

答案 0 :(得分:2)

一次有这么多问题!

第一次加载视图时,在viewDidLoad中,您已经可以访问所有容易初始化的UI元素,因此它是配置视图和设置类属性的好地方。

如果您已经加载了视图(例如,通过从导航控制器弹出视图或解除模态视图控制器),则不会调用viewDidLoad。因此,如果您想根据自视图控制器初始化以来可能发生的事情而更改某些内容(背景,添加标签,更改标签的背景等),则必须使用viewWillAppear。< / p>

如果要为更改设置动画,则可以使用viewDidAppear,以便用户在视图可见后可以看到它。

编辑:如果您使用IB或故事板,这是相关的。有关您在代码中创建视图的案例,请参阅CitronEvanescent的答案。

答案 1 :(得分:0)

如果您正在创建视图programaticaly,您可以在- (void) loadView设置属性,此方法将在显示任何内容之前调用一次。

通常我更喜欢在-(id) init中实例化UI元素,并在loadView中更新其UI。

有关详细信息:View construction reference

答案 2 :(得分:0)

可行的方法是类的viewDidLoad-(id)init-(id)initWithNibName构造函数。 应避免使用viewWillAppearviewDidAppear,因为您不希望一次又一次地实例化变量,因为每次出现视图时都会调用它们(来自pop或tabSwitch)。这两种方法可用于如果你想在重新出现时改变一些变量值