gpt4 book ai didi

ios - Swift CollectionView 删除异常

转载 作者:行者123 更新时间:2023-11-29 05:47:38 24 4
gpt4 key购买 nike

我正在尝试使用以下代码删除 CollectionView 单元格:

myDataSourceArray.remove(at:index)
collectionView.performBatchUpdates({
collectionView.deleteItems(at: [indexPath])
}
, completion: nil)

它的删除非常直接,例如在尝试删除第 1 部分中的任何单元格后,它会导致此异常:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第 1 部分中的项目数无效。更新 (2) 后现有部分中包含的项目数必须等于项目数更新前该部分中包含的项目数 (2),加上或减去从该部分插入或删除的项目数(0 插入,1 删除)以及加上或减去移入或移出该部分的项目数(0 移入) , 0 人搬出)。'

我的 collectionView 单元格分布是每个部分包含 2 个单元格,如下图所示 my collection view

对于最后一部分,如果它包含 1 个单元格,它将包含 1 个单元格

func collectionView(_ collectionView: UICollectionView, 
numberOfItemsInSection section: Int) -> Int {
if myDataSourceArray.count%2==1 && myDataSourceArray.count/2 == section {
return 1
}else{
return 2
}
}

到底是什么导致了这个异常?预先感谢:)

最佳答案

您的问题可能是由于您没有正确处理从数据源中的删除操作而引起的。

正确的方法是在更新 block 内执行数据源删除,否则您可以在更新 block 外进行更改,但在更新开始之前确保 UI 匹配(重新加载它)(您这样做了)不是)。

尝试在更新 block 内移动myDataSourceArray.remove(at:index)

https://developer.apple.com/documentation/uikit/uicollectionview/1618045-performbatchupdates

另一件事可能不会导致问题,但无论如何你都应该处理(我在这里没有看到你这样做),那就是必须手动删除部分。如果您的删除操作导致某个部分的最后一个单元格被删除,您还必须使用 deleteSections(:) 删除该部分。

关于ios - Swift CollectionView 删除异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55989799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com