在Swift中循环使用CollectionView单元格

时间:2014-08-25 16:31:31

标签: ios swift uicollectionview uicollectionviewcell

我想知道如何遍历当前可见的所有CollectionView单元格。

在目标C中,我将实现以下概念:

for(UICollectionView *cell in collectionView.visibleCells){

}

我尝试过将其改为swift:

for cell:MyCollectionViewCell in self.collectionView.visibleCells() as cell:MyCollectionViewCell {

}

但是我收到以下错误:

Type 'MyCollectionViewCell' does not conform to protocol 'SequenceType'

如何遍历我的所有CollectionViewCells

3 个答案:

答案 0 :(得分:25)

他们在该循环中使用as的方式是尝试将可见单元格数组转换为单个集合视图单元格。您想要转换为数组:

for cell in cv.visibleCells() as [UICollectionViewCell] {
    // do something        
}

或者如果您只有MyCollectionViewCell个实例,这将有效:

for cell in cv.visibleCells() as [MyCollectionViewCell] {
    // do something 
}

答案 1 :(得分:1)

我正在使用这段代码,循环遍历所有表格视图单元格,甚至是不可见的单元格,你可以使用它来确保应用于集合视图,

在这里查看我的答案:

https://stackoverflow.com/a/32626614/2715840

答案 2 :(得分:0)

在Swift 5中:

第0部分中有五个单元格。设置每个单元格的背景色。

for row in 0..<collectionView.numberOfItems(inSection: 0){

            let indexPath = NSIndexPath(row:row, section:0)

            let cell:UICollectionViewCell = collectionView.cellForItem(at: indexPath as IndexPath) ?? cell

            switch row {
            case 0:
                cell.backgroundColor = .red
            case 1:
                cell.backgroundColor = .green
            case 2:
                cell.backgroundColor = .blue
            case 3:
                cell.backgroundColor = .yellow

            default:
                cell.backgroundColor = .white
            }
        }