UIKit:以编程方式调用awakeFromNib?

时间:2011-06-22 20:58:33

标签: ios uikit nib awakefromnib

我看到了这段代码:

CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 25.0f)];
[coolButton awakeFromNib];
// ...
[coolButton release];

CoolButton子类UIButton。可以通过编程方式调用awakeFromNib吗?

如果我想在-[CoolButton awakeFromNib]中执行与我想要以编程方式创建对象的时间相同而不是从nib文件中执行的相同操作,那么最好的方法是什么?

我应该只定义一个方法并在-[CoolButton awakeFromNib]-[CoolButton initWithFrame]中调用它吗?或者,是否有另一种我应该定义的初始化方法在两种情况下都被调用:我是以编程方式还是从nib文件创建CoolButton

2 个答案:

答案 0 :(得分:5)

不,没有为在代码中创建的对象和从NIB创建的对象调用的方法。您应该编写一个包含公共初始化逻辑的单独方法,并从awakeFromNibinitWithFrame:中调用它。

答案 1 :(得分:2)

只要设置了XIB和NIB之间的所有连接,就会调用awakeFromNib。我相信在从nib文件初始化对象时会调用awakeFromNib。因此,如果您以编程方式而不是使用NIB文件创建它,则无需调用awakeFromNib。另一方面,呼叫initWithFrame听起来像是要走的路。在此功能中,您可以以编程方式创建视图,而无需nib文件。我可能是错的,但我认为initWithFrame被调用,无论你的视图是否是用笔尖创建的。