从集合视图中删除未选择的单元格
Remove Un-selected cells from Collection View
我需要一些帮助来解决问题。我有一个集合视图,其中加载了来自 firebase 的数据。用户能够对它们进行多重 select,并且在 selection 之后我想从集合视图中删除未 selected 的单元格。
我被困在这个问题上,有人可以帮忙吗?
我设法做了相反的事情。我可以删除选定的单元格。但不知何故,我在做相反的事情时遇到了问题。
下面是 selected 单元格的代码。我需要 unselected.
if let selectedCells = dogsCollectionView.indexPathsForSelectedItems {
// 1
let items = selectedCells.map { [=10=].item }.sorted().reversed()
// 2
for item in items {
dogsArray.remove(at: item)
}
// 3
dogsCollectionView.deleteItems(at: selectedCells)
}
我会执行以下操作:
获取选中单元格的IndexPath
个数组。转换为集合。
查询分区的数据源。
遍历各个部分并询问项目数。
构建一组包含所有部分中所有行的 IndexPath
。 (一组全
IndexPath
s)
从所有单元格集中删除所选单元格集。那是
你的一组未选中的单元格。
现在使用上面的代码删除一组未选中的单元格。
编辑
请注意,将两个数组都放入集合中会加快速度。如果您遍历单元格数组 IndexPath
并对所选项目数组中的每个项目执行 contains
,您将获得 O(n²)
性能,这根本无法很好地扩展。
我需要一些帮助来解决问题。我有一个集合视图,其中加载了来自 firebase 的数据。用户能够对它们进行多重 select,并且在 selection 之后我想从集合视图中删除未 selected 的单元格。 我被困在这个问题上,有人可以帮忙吗? 我设法做了相反的事情。我可以删除选定的单元格。但不知何故,我在做相反的事情时遇到了问题。 下面是 selected 单元格的代码。我需要 unselected.
if let selectedCells = dogsCollectionView.indexPathsForSelectedItems {
// 1
let items = selectedCells.map { [=10=].item }.sorted().reversed()
// 2
for item in items {
dogsArray.remove(at: item)
}
// 3
dogsCollectionView.deleteItems(at: selectedCells)
}
我会执行以下操作:
获取选中单元格的
IndexPath
个数组。转换为集合。查询分区的数据源。
遍历各个部分并询问项目数。
构建一组包含所有部分中所有行的
IndexPath
。 (一组全IndexPath
s)从所有单元格集中删除所选单元格集。那是 你的一组未选中的单元格。
现在使用上面的代码删除一组未选中的单元格。
编辑
请注意,将两个数组都放入集合中会加快速度。如果您遍历单元格数组 IndexPath
并对所选项目数组中的每个项目执行 contains
,您将获得 O(n²)
性能,这根本无法很好地扩展。