dequeueReusableCellWithIdentifier:在我的UITableViewCell子类中调用初始值设定项吗?

时间:2012-06-15 18:39:57

标签: iphone objective-c uitableview

我有一个UITableViewController子类,其原型单元格在故事板中被模拟。

cellForRowAtIndexPath委托方法中有相当数量的代码来设置单元格。问题是如果单元格刚刚从重用池中出列,我不需要大部分,因为当单元格第一次出列时已经完成了。我无法在故事板中执行此操作,因为我只能以编程方式访问某些属性。

UITableViewController在从故事板中获取原型单元时,是否在我的UITableViewCell子类中调用初始化程序?我试过了(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier,但这似乎不是这个过程的一部分。

3 个答案:

答案 0 :(得分:13)

当UITableView实例调用dequeueReusableTileWithIdentifier:时,单元格不会重新初始化。相反,在该调用中,出列的UITableViewCell将调用-(void)prepareForReuse。这是因为重新初始化单元是昂贵的,如果我们可以提供一种更简单的方法来准备它的重用(呃,呃,得到它?)它节省了大量的CPU工作。

如果您正在使用自定义单元格,请覆盖UITableViewCell prepareForReuse

答案 1 :(得分:10)

我可能没有正确地说出我的问题但我在这里寻找的确是(void)awakeFromNib

在单元格出列时调用一次,而不是在重用时调用。允许我以编程方式进行一些设置,在故事板中没有意义。

答案 2 :(得分:0)

因为您正在加载(反序列化)故事板(nib 文件)中的单元格,因此调用了 -[UITableViewCell initWithCoder:] 方法。