iOS 17批量更新时崩溃collectionView

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

我正在执行batchUpdate,

这是我的代码

if let footerIndex = self.collectionView.feeds.index(forKey: "footer") {
                              self.collectionView.performBatchUpdates {
                                   self.collectionView.totalSections += 1
                                   self.collectionView.insertSections([footerIndex], animationStyle: .none)
                                   self.collectionView.insertItemsAtIndexPaths([IndexPath.init(row: 0, section: footerIndex)], animationStyle: .none)
                              }
                         } 

在所有早期的 ios 版本中它都可以工作,但 iOS 17 会崩溃

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“检测到无效的批量更新:执行批量更新之前和之后数据源返回的部分和/或项目的数量与更新不一致。 更新前的数据源 = { 47 个部分,项目计数:[1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 , 1, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3 , 1, 3, 1] } 更新后的数据源 = { 47 个部分,项目计数:[1, 11, 1, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 , 1, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3 , 1, 3, 1] } 更新=[ 插入项目 (1 - 0), 插入项目 (1 - 1), 插入项目 (1 - 2), 插入项目 (1 - 3), 插入项目 (1 - 4), 插入项目 (1 - 5), 插入项目 (1 - 6), 插入项目 (1 - 7), 插入项目 (1 - 8), 插入项目 (1 - 9), 插入项目 (1 - 10) ]

这是错误,iOS 17 有解决办法吗

ios swift collectionview ios17
1个回答
0
投票

一般来说,修行应该以三种方式进行:

  1. 如果您想更新整体集合视图,那么您可以使用
    collectionView.reloadData ()
  2. 如果您想重新加载集合视图的部分,您可以使用 collectionView.reloadSections()
  3. 如果你想重新加载集合视图的特定单元格,你可以使用collectionView.reloadItems(at:section)

请始终使用数组来追加/删除项目,然后更新 collectionView。

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