iOS UITableView:tableView:willDisplayCell:forRowAtIndexPath:和tableView(_:prefetchRowsAt :)方法之间有什么区别?

时间:2020-02-27 09:51:13

标签: ios swift uitableview

这两个功能均可用于在用户滚动列表时获取分页数据。但是,一个相对于另一个有什么明显的优势吗?哪个更适合实现分页?

2 个答案:

答案 0 :(得分:1)

willDisplayCell在单元格即将显示时被称为 ,并受开发人员处理重复显示等极端情况的限制。它旨在用于执行对相关单元进行廉价的状态更新操作-无需预取数据。

另一方面,

prefetchRowsAt被提前调用,它使您可以“呼吸”来启动细胞所依赖的潜在昂贵操作。

The docs for prefetchRowsAt state

当用户滚动时,表视图在主调度队列上调用此方法,从而提供单元格的索引路径 它可能会在不久的将来显示 。< / p>

使用此方法的实现来启动任何昂贵的数据加载操作。始终异步加载数据,并将结果转发到表的数据源对象。表视图不会针对立即需要的单元格调用此方法,因此您的数据源对象还必须能够获取数据本身。

UITableView也可以在数据源上调用 tableView(_, cancelPrefetchingForRowsAt:)函数时取消预取操作。

是的,有很大的不同。一个选择比另一个选择需要更多的工作。

答案 1 :(得分:0)

我认为是苹果在寻找苹果文档。

prefetchRowsAt:为可能在不久的将来显示的单元格提供索引路径。使用此方法的实现开始任何昂贵的数据加载操作。

VS

willDisplayCell: 在使用单元格绘制行之前发送消息,此方法使委托有机会覆盖表格视图先前设置的基于状态的属性,例如选择和背景颜色

相关问题