web-dev-qa-db-ja.com

Swift)のCollectionViewセルをループする

現在表示されているすべてのCollectionViewセルをループする方法を知りたいです。

Objective 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'

すべてのCollectionViewCellをループするにはどうすればよいですか

12
Ryan

そのループでasを使用している方法は、表示されているセルの配列を単一のコレクションビューセルにキャストしようとしています。配列にキャストしたい:

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

または、MyCollectionViewCellインスタンスしかない場合は、次のように機能します。

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

このコードを使用して、すべてのテーブルビューセルをループします。表示されていないセルも含めて、コレクションビューに確実に適用されます。

ここで私の答えを確認してください:

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

1
IsPha

In Swift 5:

セクション0には5つのセルがあります。各セルの背景色を設定します。

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
            }
        }
1
saneryee