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

时间:2013-04-20 19:26:54

标签: uicollectionview uicollectionviewcell

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

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

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

}

但是,我想循环遍历所有细胞以进行观察,而不仅仅是可见细胞。

2 个答案:

答案 0 :(得分:15)

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

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

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

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

答案 1 :(得分:0)

Swift 4 +

func getAllCells() -> [UICollectionViewCell] {

    var cells = [UICollectionViewCell]()
    // assuming tableView is your self.tableView defined somewhere

    for i in 0...self.numberOfSections-1
    {
        for j in 0...self.numberOfItems(inSection: i) - 1
        {
            if let cell = self.cellForItem(at: NSIndexPath(row: j, section: i) as IndexPath) {

                cells.append(cell)
            }

        }
    }
    return cells
}