从集合视图中删除未选择的单元格

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)
    }

我会执行以下操作:

  1. 获取选中单元格的IndexPath个数组。转换为集合。

  2. 查询分区的数据源。

  3. 遍历各个部分并询问项目数。

  4. 构建一组包含所有部分中所有行的 IndexPath。 (一组全 IndexPaths)

  5. 从所有单元格集中删除所选单元格集。那是 你的一组未选中的单元格。

现在使用上面的代码删除一组未选中的单元格。

编辑

请注意,将两个数组都放入集合中会加快速度。如果您遍历单元格数组 IndexPath 并对所选项目数组中的每个项目执行 contains,您将获得 O(n²) 性能,这根本无法很好地扩展。