微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将NSDiffableDataSourceSnapshot应用于具有相同数据结果的动画中

如何解决将NSDiffableDataSourceSnapshot应用于具有相同数据结果的动画中

我有一个带有UITableViewDiffableDataSource的UITableView,其中我支持拉动刷新和分页。当我使用相同的数据创建一个新快照并应用该快照时,它会产生一个奇怪的动画,其中前几个元素向上滑动,而具有相同数据的新元素从左侧滑动。这是更新的代码段:

var snapshot = NSDiffableDataSourceSnapshot<String,MyItemIdentifier>()

sections.forEach { section in 
  snapshot.appendSections([section.title])
  snapshot.appendItems(section.items,toSection: section.title)
}

self.dataSource?.apply(snapshot)

当数据未更改时,应用内容与上一个快照相同的新快照不应该产生动画吗?我已经用新内容检查了现有内容的哈希值,它们都是一样的。

此外,我还有一个无限滚动功能,可以将项目10乘10。当我向下滚动并加载下一页时,将有10个项目附加到现有数据中。我创建了一个新快照并将其应用于数据源,这再次导致出现奇怪的动画,并且我的表格视图跳到顶部。

在更改之间,创建了新对象,但是它们具有相同的哈希,因此它不应该影响表的刷新,对吗?

是否有人知道导致表视图认为现有内容已更改但没有更改的原因?我发现有关数据源如何进行差异化处理的唯一信息是,它会检查每个部分和每个项目的哈希值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。