循环遍历UICollectionview中的所有单元格

Aya*_*yan 9 uicollectionview uicollectionviewcell

我有UICollection,其中将有许多学生项目和每个项目内有开关用于录制考勤.我像这样循环遍历所有可见的细胞.

for(attendancecollectionViewCell* cells in [[self collectionView] visibleCells]){

    NSLog(@"The switch value : %c",cells.attendanceSwitchLabel.isOn);

}
Run Code Online (Sandbox Code Playgroud)

但是,我想循环遍历所有细胞以便参加,而不仅仅是可见细胞.

小智 16

您无法遍历不可见的单元格,因为这些单元格不存在.与UITableView一样,UICollectionView会在屏幕外重用单元格.即,如果向下滚动,则需要滚动一个单元格并将其用于即将滚动到视图中的"新"单元格.

如果您希望保留集合中的条目状态,则必须将其与单元格本身分开存储.例如,映射到indexPath.row值的NSArray结构(或自定义NSObject).

对你来说一个更重要的问题是:你想要在你的for循环中实现什么?

如果您需要更多信息或示例代码,请与我们联系.

  • "因为那些细胞不存在":这不是真的.细胞在重复使用时确实存在.它们存在并等待重复使用.但我有可复制的证据,其中单元格不在visibleCells中并再次使用(即:不调用DequeueReusableCell). (4认同)
  • @Softlion我遇到了同样的问题.事实证明这是一个iOS10的东西,有时甚至在离开屏幕后细胞仍然存在.您可以通过执行```collectionView.prefetchingEnabled = NO```来禁用此行为 (4认同)