遍历 UICollectionView 中的所有单元格

Posted

技术标签:

【中文标题】遍历 UICollectionView 中的所有单元格【英文标题】:Looping through all cells in UICollectionView 【发布时间】:2013-04-05 09:33:03 【问题描述】:

我有一个UICollectionView,我想为每个单元格添加动画。

目前我正在使用

for(UICollectionView *cell in collectionView.visibleCells)
  //add animation to cell here

但这只会将动画应用于可见单元格,一旦我向下滚动并且单元格不再可见,动画就会停止。

如何循环遍历UICollectionView 中的所有单元格?

【问题讨论】:

我正在尝试实现类似的目标。但我在可见单元格中得到零个项目。这个数组在什么时候被填充? 【参考方案1】:

我可能会以不同的方式解决这个问题。如果你想让单元格动画,你可以设置一个属性shouldAnimate = YES。然后在您的collectionView:cellForItemAtIndexPath: 中检查该属性并在需要时应用动画(或删除它)。

设置属性后,只重新加载visibleCells:[collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems]

现在,由于动画是在通过数据源协议请求单元格时提供的,因此您也可以在滚动时获得动画。

【讨论】:

哇,这太棒了,而且效果很好,非常感谢 :) 嗨,一个(愚蠢的)问题。 reloadItemsAtIndexPaths 是否在检查属性后进入同一个 collectionView:cellForItemAtIndexPath: ? 不,例如,将它放在处理程序中以进行按钮按下。将它放在collectionView:cellForItemAtIndexPath: 中会将您的代码置于循环中。不推荐。 为了清楚起见,您需要在集合中用作集合视图数据源的对象上设置属性。

以上是关于遍历 UICollectionView 中的所有单元格的主要内容,如果未能解决你的问题,请参考以下文章

将 UICollectionView 部分中的所有项目替换为一项(组合单元格)

UICollectionView / FlowLayout

为 UICollectionView 中的所有 UICollectionViewCell 设置动画

UiCollectionview 允许对特定单元格进行单选

UIScrollView 中的 UICollectionView 加载所有单元格

UICollectionView 不显示模拟器中的所有单元格