如果我有一个自定义表单元格,它由:
tableView dequeueReusableCellWithIdentifier在自定义单元格的什么地方可以设置自定义初始化参数?为我的自定义表单元格自动生成的.m文件包括:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
NSLog(@"INITWITHSTYLE!");
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}我添加了NSLog调用,以查看是否调用过该initWithStyle,但从未访问过该NSLog,这意味着也从未调用过该特定的initWithStyle。那么,当使用dequeueReusableCellWithIdentifier初始化自定义表单元格时,实际使用的是该自定义单元格的哪个init方法?
发布于 2014-09-17 22:34:04
你的单元格会在-(void)awakeFromNib中初始化一次(即使它来自故事板)。
然后,没有办法知道它将从哪里出队,但是当它从屏幕上移除并排队到可重用单元池中时,它可以接收到一条消息:此时调用- (void)prepareForReuse。
发布于 2014-09-17 22:35:34
如果使用情节提要,则可以使用awakeFromNib,否则应调用initWithStyle:reuseIdentifier:
- (void)awakeFromNib {
}但是您应该记住,单元格将被重用,因此假设您的单元格在第一次调用awakeFromNib时被调用,但以后可以重用该单元格,并且不会再次调用此方法,在这种情况下,如果它对您不起作用,您可以在传递数据时使用自定义设置器
//扩展
在注释中,您问到当单元格被重用时会调用什么方法。你可以使用prepareForReuse,请阅读讨论(取自苹果)
- (void)prepareForReuse讨论如果UITableViewCell对象是可重用的-也就是说,它有一个重用标识符-就在该对象从UITableView方法dequeueReusableCellWithIdentifier:返回之前调用该方法。出于性能原因,应仅重置与内容无关的单元格属性,例如alpha、编辑和选择状态。tableView中表格视图的委托:cellForRowAtIndexPath:在重用单元格时应始终重置所有内容。如果单元对象没有关联的重用标识符,则不会调用此方法。如果重写此方法,则必须确保调用超类实现。
https://stackoverflow.com/questions/25893353
复制相似问题