20

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

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

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

4

3 回答 3

47

从 a 加载的对象*.(nib|xib)初始化为:

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

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

- (void)awakeFromNib;

来自 NSNibAwaking 协议。

于 2009-01-29T16:20:40.150 回答
10

我还要提到initWithCodervs awakeFromNib

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

于 2009-01-29T16:28:58.480 回答
6

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

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

于 2009-01-29T16:12:47.140 回答