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

[英]Does Interface Builder use the -init method to initialize view controllers?


I have setup tab bar controller using interface builder, and each tab bar item is linked to a view controller (4 tabs, 4 view controllers). I want to know if Interface Builder uses an -init method to initialize the view controller because apparently this method does not get called:

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

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

... and I want to do some initializations. I can't add that to -viewDidLoad since it is recalled in case of memory warning. Any idea?

......我想做一些初始化。我无法将其添加到-viewDidLoad,因为在内存警告的情况下会调用它。任何的想法?

3 个解决方案

#1


Objects loaded from a *.(nib|xib) are inited with:

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

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

So you could override that or if doing your setup after -initWithCoder: is called is not a problem you could use:

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

- (void)awakeFromNib;

from the NSNibAwaking protocol.

来自NSNibAwaking协议。

#2


I was also going to mention initWithCoder vs awakeFromNib.

我还要提到initWithCoder和awakeFromNib。

In general, I override initWithCoder when allocating memory for the object or setting values. When you need to do some setup after the IBOutlets are connected, then override awakeFromNib. Until then, IBOutlet instance variables to other views and controls are not connected.

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

#3


Sounds like you want to implement -(void) awakeFromNib.

听起来你想要实现 - (void)awakeFromNib。

NSNibAwaking Protocol Reference (requires ADC login)

NSNibAwaking协议参考(需要ADC登录)

智能推荐

注意!

本站翻译的文章,版权归属于本站,未经许可禁止转摘,转摘请注明本文地址:http://www.itdaan.com/blog/2009/01/29/7206ef694e8bb393b60ed6b26d810458.html



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告