[实现无限滚动(滚动到底部时在UITableView中分页结果):reloadData或insertRows?

问题描述 投票:0回答:1

[在UITableView中实现无限滚动时(当用户滚动到底部时将其他结果加载到数据源中,应该通过reloadData()还是通过插入行(也许通过批量更新)来更新表?

我现在正在使用reloadData(),它可以正常工作,但是我不确定幕后发生了什么以及效率如何。使用reloadData(),新行将插入到表的底部,并且该表不会跳转(因此对用户而言是无缝更新),但是UIKit会不必要地重新加载整个表(我们只是看不到它)?因为仅当用户滚动到底部时才将新行添加到表中,所以这可能意味着在其上方且视线之外有大量单元格。我知道这些单元格始终不在视图层次结构中(因为当用户滚动时表会添加和删除单元格),但是reloadData()是否有效地更新了分页块,无论采用哪种机制?

ios swift uitableview
1个回答
0
投票

由于实际上在任何时候屏幕上的单元格都很少,因此reloadData并不比插入慢得多。真正的区别在于动画。 reload只是添加了没有动画的新单元格,因为插入将使您对其中的单元格进行动画处理。更新的方法(iOS 13+)是不调用这两种方法,而是使用UITableViewdiffableDatasource,它将执行更新自动使用您指定的动画(这与RxCocoa和IGListKitWork的方式非常相似)。

© www.soinside.com 2019 - 2024. All rights reserved.