10

我有 UICollection ,其中将有许多学生项目,每个项目内部都有用于记录出勤的开关。我像这样遍历所有可见的单元格。

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

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

}

但是,我想遍历所有单元格以进行出勤,而不仅仅是可见单元格。

4

2 回答 2

17

您不能循环遍历不可见的单元格,因为这些单元格不存在。UICollectionView 和 UITableView 一样,一旦单元格离开屏幕就会重用它们。即,如果您向下滚动,它将获取一个已滚动的单元格并将其用于即将滚动到视图中的“新”单元格。

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

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

如果您需要更多信息或示例代码,请告诉我。

于 2013-04-21T05:02:52.447 回答
0

斯威夫特 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
}
于 2018-04-12T17:07:43.527 回答