2011-11-12 44 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

你究竟想要初始化什么?另外,当你说“没有工作”时,你是什么意思? –