使用自定义initWithCoder初始化视图

时间:2013-08-04 11:04:10

标签: ios objective-c xib

为了初始化具有xib的视图,我使用initWithCoder函数。但是,如果我需要使用自定义参数初始化xib,该怎么办呢?

我需要这样的东西:

- (id)initWithCoder:(NSCoder *)aDecoder
           andTitle:(NSString *)titleString
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.titleLabel = titleString;
    }
    return self;
}

我什么时候打电话给它? awakeFromNib之后?

2 个答案:

答案 0 :(得分:11)

您不能像这样修改initWithCoder:方法,因为该方法是在您无法控制的协议中定义的。相反,您需要在创建对象后调用setTitle:方法,可能在awakeFromNib中,或者从拥有控制器调用。{/ p>

答案 1 :(得分:9)

通常,您不会自己调用initWithCoder,因此无法将自定义参数传递给它。该方法将由nib加载机制调用,您无法控制它。

您当然不会从awakeFromNib中调用它 - 该对象已经被该点初始化,因此您无法重新调用它。

最简单的解决方案是将自定义参数公开为属性,并在创建视图后设置它们。