如何使用Swift在iOS Photos应用程序中选择所有UICollectionView单元格?

时间:2016-06-29 00:20:38

标签: ios xcode swift uicollectionview uicollectionviewcell

我似乎无法让这个为我工作,我没有找到任何其他类似问题的答案。

我正在使用Swift并且需要知道如何能够在我的应用中选择“全部选择”按钮选择所有可见&不可见的细胞就像iOS上的照片应用程序一样。

我的应用程序也处理照片,因此每个单元格都有两个UIImageViews,一个是有问题的照片,另一个是隐藏的UIImageView,在选择图像时出现(它只是一个复选标记)。

我一直在使用的代码(不起作用)是:

        for cell in self.collectionView.visibleCells() as! [ImageCell]{
        if cell.checkMark.hidden{
            cell.checkMark.hidden = false
        }
        else{
            cell.checkMark.hidden = true
        }
    }

1 个答案:

答案 0 :(得分:3)

我认为理解控制是如何工作的很好。 UICollectionViewUITableView都只创建并显示足够的单元格以适应屏幕(对于滚动缓冲区可能还需要更多)。这是为了处理app可能具有大量数据的情况。例如,如果用户有1000张照片,如果1000实际显示在屏幕上和屏幕外,那么性能将会很糟糕。

话虽这么说,你应该通过模型来处理选择。有很多方法可以做到这一点,但有一种方法是:

让每个单元格都由一个至少有photoisSelected作为属性的自定义对象表示。每次用户选择或取消选择单元格时,只需更新isSelected属性即可。在collectionView:cellForItemAtIndexPath:中,根据isSelected属性显示复选标记。通过简单地遍历数组并更新该属性来选择全部,然后调用reloadData为每个单元格更新它。

因为您更新了数组并且UICollectionView基于数组,所以每个单元格都会在屏幕上显示时被选中。