In order to initialize a view that has xib, I use initWithCoder
function. But what if I need to initialize the xib with custom parameter.
I need something like this:
- (id)initWithCoder:(NSCoder *)aDecoder
andTitle:(NSString *)titleString
{
self = [super initWithCoder:aDecoder];
if (self) {
self.titleLabel = titleString;
}
return self;
}
And when do I call it? After awakeFromNib
?
You can't modify the initWithCoder:
method like that because the method is defined in a protocol you don't control. Instead you need to either call the setTitle:
method after the object has been created, possibly in awakeFromNib
, or from the owning controller.
You don't call initWithCoder yourself, usually, so you can't pass custom parameters to it. That method would be called by the nib loading mechanism and you don't have control over it.
You certainly wouldn't call it from awakeFromNib - the object would already have been initialised by that point so you couldn't re-call it.
The simplest solution is to expose your custom parameters as properties and just set them after you've created the view.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With