13

我有一个 UITableViewController 子类,它的原型单元在情节提要中模拟。

cellForRowAtIndexPath在设置单元的委托方法中有相当多的代码。问题是,如果单元格刚刚从重用池中出列,我不需要其中的大部分内容,因为当单元格第一次出列时,它已经完成了。我不能在情节提要中这样做,因为有些属性我只能以编程方式访问。

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

4

3 回答 3

13

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

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

于 2012-06-15T19:00:17.413 回答
11

我可能没有正确地表达我的问题,但我实际上是在这里寻找(void)awakeFromNib

当单元格出列而不是重用时调用一次。允许我以编程方式进行一些在情节提要中没有意义的设置。

于 2012-07-12T02:08:27.227 回答
0

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

于 2021-07-20T17:32:43.250 回答