这对我来说是一个天真的问题,但我的View Controller中有一些变量,我不知道应该在哪里初始化它们。我的意思是,如果这是一个自定义类,那么通常我会初始化并在init方法或自定义initWith方法中给它们值。
源于上述内容的其他问题包括:
View Controller的init方法在哪里。而且,由于View Controller本质上是一个类,并且必须在某个地方使用alloc-init。究竟是在哪里创建View Controller实例?
非常感谢,
Parijat Kalia
答案 0 :(得分:7)
在正确的位置初始化变量对于视图控制器非常重要。您可以在四个地方执行此操作:
1)initWithNibName:bundle: 这实际上是视图控制器的构造函数。调用[[MyViewController alloc] init]实际上最终调用[[MyViewController alloc] initWithNibName:nil bundle:nil],这表示你正在使用默认的笔尖名称。
2)awakeFromNib 完全从nib实例化视图控制器时,initWithNibName:bundle:不会被调用,因为您没有创建新的ViewController,而是反序列化现有的ViewController。在这种情况下,反序列化后会调用awakeFromNib。
initWithNibName:bundle和awakeFromNib是初始化变量的好地方,这些变量只在整个视图控制器的生命周期中创建一次,并且与任何视图无关我想在一个名为“setup”的函数中初始化这些变量并调用[self setup]来自initWithNibName:bundle和awakeFromNib。
3)viewDidLoad 加载视图时调用。初始化与您的观点相关的内容的好地方。
4)viewWillAppear:动画 视图即将变为可见时调用。子视图的尺寸(即边界,框架,位置......)仅在此功能时可用,因此您希望在此处初始化依赖于这些数量的变量,而不是上述任何一种方法。