ios - 如何使用 Swift 选择 iOS 照片应用程序中的所有 UICollectionView 单元格?

标签 ios xcode swift uicollectionview uicollectionviewcell

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

我正在使用 Swift,我需要知道如何在我的应用程序中使用“全选”按钮来选择所有可见和不可见的单元格,就像 iOS 上的库存照片应用程序一样。

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

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

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

最佳答案

我认为了解控件的工作原理很好。 UICollectionViewUITableView 都只创建和显示足够的单元格以适应屏幕(可能还有几个用于滚动缓冲区)。这是为了处理应用程序可能有大量数据的情况。例如,如果用户有 1000 张照片,如果实际在屏幕上和屏幕外显示 1000 张照片,性能会很糟糕。

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

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

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

关于ios - 如何使用 Swift 选择 iOS 照片应用程序中的所有 UICollectionView 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088336/

相关文章:

ios - 为什么不是所有的 NSLayoutconstraints 都随动画变化,如何解决?

ios - 在 Facebook 帖子上分享文字

iphone - 如何访问 NSString 中的第 n 个字符?

iphone - Xcode:iPhone 应用程序代码设计错误

ios - xcode 6、启动图像、iOS 7、iPhone 5s iPhone 4s

ios - Xcode swift 从 json 下载二进制文件

ios - Swift IOS 使用 AVFoundation 录制视频和音频

ios - 在 spritekit 中更改节点颜色

iphone - 指定初始化器

iphone - 支持的方向不限制实际方向