断言UITableView内部不一致prefetchedCells和indexPathsForPrefetchedCel



使用UITableView自定义单元格。在使用iOS SDK 14之前,这是正常的。当开始使用iOS sdk 15时,UITableView在滚动时给出错误。

错误是"断言UITableView内部不一致prefetchedCells和indexPathsForPrefetchedCells不同步">

由于这个错误,单元格开始随机消失。

这个断言表明UITableView的内部状态是" corrupted "。最常见的原因是当表视图执行更新或重新加载时,并且处于对数据源或委托方法之一的回调过程中,并且您的代码以某种方式导致意外的"重入"。(例如,通过执行另一个更新/重新加载或手动运行主运行循环)。这会导致UITableView进入一个不一致的内部状态,因为它已经在处理另一个更新。

在我的情况下,我有一个坏的交互UITableView和NSAttributedString() init方法,使用SwiftSoup转换html到attributedString。它在更新tableViewCell时被调用,这导致cellForRowAt再次被调用,而我的应用程序代码已经在处理cellForRowAt调用。tableView在那之后失去了理智

我通过在cellForRowAt运行之前将html转换为attributedString来修复此问题,然后cellForRowAt使用它。

我也遇到过这个问题。经过长时间的搜索,我找到了这个视频:

苹果WWDC2021

苹果的一些性能改进打破了我使用的嵌套UITableView。

我改变了UITableView的isPrefetchingEnabledfalse的值。你可以将它应用于特定的TableView,也可以为整个应用改变它

if #available(iOS 15.0, *) {
UITableView.appearance().isPrefetchingEnabled = false
}

当一个单元格的完全相同的实例呈现给同一个表中的两个不同的行时,就会发生这种情况。在我看到的例子中,相同的单元格实例作为第一行添加到两个不同的节中。

相关内容

  • 没有找到相关文章

最新更新