現在表示されているすべての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をループするにはどうすればよいですか
そのループでas
を使用している方法は、表示されているセルの配列を単一のコレクションビューセルにキャストしようとしています。配列にキャストしたい:
for cell in cv.visibleCells() as [UICollectionViewCell] {
// do something
}
または、MyCollectionViewCell
インスタンスしかない場合は、次のように機能します。
for cell in cv.visibleCells() as [MyCollectionViewCell] {
// do something
}
このコードを使用して、すべてのテーブルビューセルをループします。表示されていないセルも含めて、コレクションビューに確実に適用されます。
ここで私の答えを確認してください:
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
}
}