我似乎无法让它为我工作,而且我还没有找到任何其他类似问题的答案。
我正在使用 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
}
}
最佳答案
我认为了解控件的工作原理很好。 UICollectionView
和 UITableView
都只创建和显示足够的单元格以适应屏幕(可能还有几个用于滚动缓冲区)。这是为了处理应用程序可能有大量数据的情况。例如,如果用户有 1000 张照片,如果实际在屏幕上和屏幕外显示 1000 张照片,性能会很糟糕。
也就是说,您应该通过模型来处理选择。有很多方法可以做到这一点,但一种方法是:
让每个单元格都由一个自定义对象表示,该对象至少有一个 photo
和 isSelected
作为属性。每次用户选择或取消选择单元格时,只需更新 isSelected
属性。在 collectionView:cellForItemAtIndexPath:
中,根据 isSelected
属性显示复选标记。通过简单地遍历数组并更新一个属性来选择全部,然后调用 reloadData
为每个单元格更新它。
因为您更新了数组并且 UICollectionView
是基于数组的,所以每个单元格在屏幕上显示时都会被选中。
关于ios - 如何使用 Swift 选择 iOS 照片应用程序中的所有 UICollectionView 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088336/