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