为了初始化具有xib的视图,我使用initWithCoder
函数。但是,如果我需要使用自定义参数初始化xib,该怎么办呢?
我需要这样的东西:
- (id)initWithCoder:(NSCoder *)aDecoder
andTitle:(NSString *)titleString
{
self = [super initWithCoder:aDecoder];
if (self) {
self.titleLabel = titleString;
}
return self;
}
我什么时候打电话给它? awakeFromNib
之后?
答案 0 :(得分:11)
您不能像这样修改initWithCoder:
方法,因为该方法是在您无法控制的协议中定义的。相反,您需要在创建对象后调用setTitle:
方法,可能在awakeFromNib
中,或者从拥有控制器调用。{/ p>
答案 1 :(得分:9)
通常,您不会自己调用initWithCoder,因此无法将自定义参数传递给它。该方法将由nib加载机制调用,您无法控制它。
您当然不会从awakeFromNib中调用它 - 该对象已经被该点初始化,因此您无法重新调用它。
最简单的解决方案是将自定义参数公开为属性,并在创建视图后设置它们。