我有自定义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,我可以考虑一些解决方法,但我想让它干净。 谢谢。
答案 0 :(得分:14)
如果单元格来自故事板或nib文件,则不会调用initWithStyle:reuseIdentifier
,而是调用initWithCoder:
。
以下是覆盖initWithCoder:
的典型实现:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Do your custom initialization here
}
return self;
}
如果您需要在自定义初始化期间访问IBOutlet,则无效。
答案 1 :(得分:8)
如果您需要与IBOutlet交谈,您可能还会考虑awakeFromNib方法。
<强>讨论强>
nib加载基础结构将awakeFromNib消息发送到从nib归档重新创建的每个对象,但只有在归档中的所有对象都已加载并初始化之后。当一个对象收到一个awakeFromNib消息时,它保证已经建立了所有的插座和动作连接。