使用自定义的initWithCoder初始化视图

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

我需要这样的东西:

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

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

您不能像这样修改initWithCoder:方法,因为方法是在您不控制的协议中定义的。 相反,您需要在创build对象(可能位于awakeFromNib )或拥有控制器后调用setTitle:方法。

您通常不会自己调用initWithCoder,因此您无法将自定义parameter passing给它。 那个方法会被nib加载机制调用,而你不能控制它。

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

最简单的解决scheme是将您的自定义参数作为属性公开,并在创build视图之后进行设置。