自定义UITableVIewCell初始化不被调用

我有自定义UiTablleviewCell与一些图像和标签,我想在tableview单元格中旋转标签…所以我想编辑initWithStyle方法,但它似乎是从来没有调用。

- (id)initWithStyle:(UITableViewCellStyle)stylereuseIdentifier:(NSString*)reuseIdentifier{ NSLog(@"creating cell"); self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { } return self;} 

但在我的日志中,我不能看到这个消息。 在tableview中我有标准的cellForRow方法

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *simpleTableIdentifier = @"messagesCell"; TBCellMessagesCell *cell = (TBCellMessagesCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; cell.selectionStyle = UITableViewCellSelectionStyleNone; // smt stuff return cell; } 

所以我想知道如何tableview初始化tableviewcells,我可以考虑一些解决方法,但我想要它干净。 谢谢。

如果单元格来自storyboard或nib文件,则不调用initWithStyle:reuseIdentifier ,而是调用initWithCoder: initWithStyle:reuseIdentifier

下面是一个被覆盖的initWithCoder:的典型实现:

 -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { // Do your custom initialization here } return self; } 

如果您在自定义初始化过程中需要访问IBOutlet,将无法工作。

如果您需要与IBOutlet交谈,您也可以考虑awakeFromNib方法。

讨论
nib加载基础结构将一个awakeFromNib消息发送到从nib存档重新创build的每个对象,但仅在存档中的所有对象都已加载并初始化之后。 当一个对象收到一个awakeFromNib消息时,保证所有的出口和动作连接已经build立。