UITableView是否使用dequeueReusableCellWithIdentifier?

时间:2016-04-28 12:29:50

标签: ios objective-c uitableview

当你不在cellForRowAtIndexPath方法中使用dequeueReusableCellWithIdentifier时,我想知道到底发生了什么。 在我合作的一个项目中,我们有不同类型的自定义UITableViewCell,它们都出现在一个单独的tableview中。所以这里我们用所有应该显示的TableCell填充数组。这些数组不是很大(10-15个单元格),所以对我们来说这种方式甚至不使用dequeueReusableCellWithIdentifier的任何标识符。接下来的问题是如何使用标识符resp。在UITableView的单个部分中使用不同的单元格时,dequeueReusableCellWithIdentifier。有人在这里可以解释一下,背景究竟发生了什么?关心Nils

1 个答案:

答案 0 :(得分:4)

dequeueReusableCellWithIdentifier让我想起Flyweight pattern 由于单元格的分配和实例化可能是一项昂贵的任务,因此使用此机制,您有机会仅创建第一个可见单元格,稍后只需更改其内容即可重复使用它们。滚动动画必须尽可能快,以便为用户提供良好的体验 这值得么?是的,它基本上是免费的,我们只需要注意一些旧的数据仍然可以存在于新的可视化中,诀窍是始终正确实现方法-prepareForReuse(),在这里,你最终可以擦除所有显示的设置新数据之前的数据  
如果你想在同一部分使用不同的单元格是绝对可能的,如果它们有不同的高度。您只需要为每个单元格创建一个不同的单元格标识符,并将它们与您的数据联系起来 我通常映射要在struct(swift)或字典中显示的数据以及要使用的单元标识符的键。
如果您在滚动时表示自己的单元格类型,则应dequeue