10

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

我需要这样的东西:

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

我什么时候调用它?之后awakeFromNib

4

2 回答 2

11

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

于 2013-08-04T11:07:21.817 回答
9

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

你当然不会从 awakeFromNib 调用它——对象已经被初始化了,所以你不能重新调用它。

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

于 2013-08-04T11:10:19.673 回答