使用自定义initWithCoder初始化视图

Lud*_*uda 10 objective-c xib ios

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

我需要这样的东西:

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

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

Wai*_*ain 11

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


jrt*_*ton 9

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

你肯定不会从awakeFromNib中调用它 - 该对象已经被该点初始化,因此你无法重新调用它.

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