选择UICollectionView iOS中的所有项目,甚至是不可见的单元格

Akh*_*rma 6 objective-c ios uicollectionview

我正在创建一个应用程序,我在工具栏上有一个按钮,用于选择集合视图中的所有项目.

但我面临的问题是,当我点击按钮时,它只选择屏幕上可见的项目.这是由于CELL REUSE功能.

有没有什么方法可以选择所有单元格,甚至那些当前对用户不可见的单元格?

谢谢J

Gas*_*enc 17

即使使用单元重用,这也是可能的.您可以在第一部分中选择所有单元格:

for (NSInteger row = 0; row < [self.collectionView numberOfItemsInSection:0]; row++) {
    [self.collectionView selectItemAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0] animated:NO scrollPosition:UICollectionViewScrollPositionNone];
}
Run Code Online (Sandbox Code Playgroud)

如果你有超过1个部分,只需使用另一个嵌套的for循环来遍历所有部分.


Phi*_*son 3

使用单元复用时不可能选择所有单元。

由于单元格重用,任何时刻存在的实际单元格数量比当前可见的单元格数量多一些。即 6 个可见的细胞大约是现有的 8 个细胞。

您可以找出有多少可见细胞

NSArray *visiblePaths = [self.collectionView indexPathsForVisibleItems];
Run Code Online (Sandbox Code Playgroud)

解决方案是将selected值存储在 UICollectionView 数据源中,并在自定义其中的单元格时使用该值cellForItemAtIndexPath

  • 事实上,即使使用单元格重用,也可以选择所有单元格 - 请参阅下面我的答案。 (4认同)