ios - 实现无限滚动时(滚动到底部时UITableView中的分页结果):reloadData还是insertRows?
问题描述
在 a 中实现无限滚动时UITableView
(当用户滚动到底部时将附加结果加载到数据源),应该通过插入行来更新表reloadData()
还是通过插入行(可能通过批量更新)来更新表?
我现在正在使用reloadData()
它,它工作得很好,但我不确定幕后发生了什么以及它的效率如何。使用reloadData()
,新行被插入到表格的底部并且表格不会跳转(所以对用户来说这是一个无缝更新),但是 UIKit 是否会不必要地重新加载整个表格(我们只是看不到它)?因为只有在用户滚动到底部时才会将新行添加到表格中,这可能意味着表格上方有大量单元格并且不在视图中。我知道这些单元格无论如何都不在视图层次结构中(因为表格会在用户滚动时添加和删除单元格),但是reloadData()
无论这种机制如何,它都能有效地更新分页块吗?
解决方案
由于实际上任何时候屏幕上的单元格都很少,因此 reloadData 并不比 insert 慢得多。真正的区别在于动画。reload 只是添加没有动画的新单元格,因为 insert 将允许您为单元格设置动画。更新的方法(iOS 13+)是不调用任何一种方法,而是使用UITableViewdiffableDatasource,它将自动执行更新您指定的动画(这更类似于 RxCocoa 和 IGListKitWork)。
推荐阅读
- javascript - 为什么Big Endian默认是DataView?
- javascript - 在悬停闪烁时弹出图像
- javascript - 如何将 ipython 笔记本嵌入网页?
- java - Javafx SSL 客户端配置以使用我的 Spring boot ssl 安全 Rest Api
- laravel - 在 Laravel 中将子表详细信息与父表详细信息合并
- mysql - mysql bind_param 变量类型为什么不遵守规则
- laravel - Laravel 同时执行多个任务
- prometheus - Prometheus - 导出器描述接口
- r - 在 R 上构造对称矩阵
- vba - VBA 查找和替换