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

好久不见. 提交于 2019-12-22 04:42:51

问题


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 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.


回答1:


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.




回答2:


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
}


来源:https://stackoverflow.com/questions/6942152/why-does-the-init-method-of-a-custom-nib-based-table-cell-not-get-called

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!