我想知道如何遍历当前可见的所有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
答案 0 :(得分:25)
他们在该循环中使用as
的方式是尝试将可见单元格数组转换为单个集合视图单元格。您想要转换为数组:
for cell in cv.visibleCells() as [UICollectionViewCell] {
// do something
}
或者如果您只有MyCollectionViewCell
个实例,这将有效:
for cell in cv.visibleCells() as [MyCollectionViewCell] {
// do something
}
答案 1 :(得分:1)
我正在使用这段代码,循环遍历所有表格视图单元格,甚至是不可见的单元格,你可以使用它来确保应用于集合视图,
在这里查看我的答案:
答案 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
}
}