对于相同的"项目"会多次调用cellForRowAtIndexPath吗?

时间:2016-05-20 01:17:15

标签: ios swift

我们说我有一个代表我数据源的项目列表:

self.items = [User]()
for model in self.fetchedItems(20){
    self.items.append(model)
}
self.tableView.reloadData()

我们说我的屏幕只适合5个项目。 让我们说数组中的第一项(indexPath = 0)是用户Hannah

如果用户一直向下滚动到底部,那么一直备份,cellForRowAtIndexPath会调用Hannah吗?

1 个答案:

答案 0 :(得分:2)

可能,它可能不会。不能保证这种或那种方式。一种可能性是,持有Hannah对象的单元格将通过dequeue方法返回以用于以后的索引路径,然后当您向上滚动时,cellForRowAtIndexPath将获得单元格0的调用增益,并且可能会被传递传递给单元格5的相同单元格...即,很可能同一单元格将用于多行。

这就是为什么在你出列时设置整个单元状态如此重要的原因。可能使用prepareForReuse作为帮助者。除非您明确告诉表视图已更改它(通过调用reloadData或开始/结束更新),因此保持阵列状态不变也很重要。