Interface Builder是否使用-init方法初始化视图控制器?

时间:2009-01-29 15:39:31

标签: cocoa-touch interface-builder

我使用界面构建器设置了标签栏控制器,每个标签栏项目都链接到一个视图控制器(4个标签,4个视图控制器)。我想知道Interface Builder是否使用-init方法来初始化视图控制器,因为显然这个方法没有被调用:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

...我想做一些初始化。我无法将其添加到-viewDidLoad,因为在内存警告的情况下会被召回。有什么想法吗?

3 个答案:

答案 0 :(得分:47)

*.(nib|xib)加载的对象包含:

- (id)initWithCoder:(NSCoder *)inCoder;

所以你可以覆盖它,或者在调用-initWithCoder:之后进行设置不是你可以使用的问题:

- (void)awakeFromNib;
来自NSNibAwaking协议的

答案 1 :(得分:10)

我还要提到initWithCoder vs awakeFromNib

通常,在为对象分配内存或设置值时,我会覆盖initWithCoder。在连接IBOutlet后需要进行一些设置时,请覆盖awakeFromNib。在此之前,IBOutlet实例变量与其他视图和控件之间没有连接。

答案 2 :(得分:6)

听起来好像要实施-(void) awakeFromNib

NSNibAwaking Protocol Reference (requires ADC login)