我们说我有一个代表我数据源的项目列表:
self.items = [User]()
for model in self.fetchedItems(20){
self.items.append(model)
}
self.tableView.reloadData()
我们说我的屏幕只适合5个项目。
让我们说数组中的第一项(indexPath = 0)是用户Hannah
。
如果用户一直向下滚动到底部,那么一直备份,cellForRowAtIndexPath
会调用Hannah
吗?
答案 0 :(得分:2)
可能,它可能不会。不能保证这种或那种方式。一种可能性是,持有Hannah
对象的单元格将通过dequeue方法返回以用于以后的索引路径,然后当您向上滚动时,cellForRowAtIndexPath将获得单元格0的调用增益,并且可能会被传递传递给单元格5的相同单元格...即,很可能同一单元格将用于多行。
这就是为什么在你出列时设置整个单元状态如此重要的原因。可能使用prepareForReuse
作为帮助者。除非您明确告诉表视图已更改它(通过调用reloadData或开始/结束更新),因此保持阵列状态不变也很重要。