开发者

why does the init-method of a custom nib-based table cell not get called

I have a nib-based table view cell which I created in Interface builder. I set the class of the table view cell to FooTableViewCell which extends from UITableViewCell.

In FooTableViewCell I override the init method like this:

-(id)init{

    if ((self = [super init])){
      // My init code here
    }
    return self;
}

I now expected开发者_Go百科 that my gets called, when it is being instantiated. However the table view gets displayed but the method is never called.

I could work around this but I would like to fully understand it and for me it's not clear how an object can come to live without the init method being called.


When being unarchived initialization goes through a slightly different path.

Instead of -(id)init being called -(id)initWithCoder:(NSCoder*)aDecoder will be called. At this point outlets aren't hooked up, if you need access to the outlets you can override -(void)awakeFromNib which will be called after the object has been hooked up.


When object is being loaded from nib file then its -awakeFromNib method is called - you can put your initialisation code there:

- (void)awakeFromNib{
   // Init code
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜