UICollectionView.visibleCells()でUICollectionViewCellsの配列をループして、セルがプロトコルに準拠しているかどうかを確認すると、そのセルがUIViewであり、フレームプロパティがあることを忘れてしまいます。Swift forget objectsが型です
for cell in collectionView.visibleCells() {
let cellPosition1 = cell.frame.origin
if let cell = cell as? AwesomeCellProtocol {
let cellPosition2 = cell.frame.origin
cell.doAwesome(cellPosition)
}
}
スウィフトはcellPosition2の設定のコンパイルエラーを与える:
cellPosition1が正常に動作設定Value of type 'AwesomeCellProtocol' has no member 'frame'
。
UIViewとAwesomeCellProtocolの両方をチェックできますか?
あなたがもし、ブロック、 forループの外側のスコープからの「影」cell
変数のスコープの新しい変数
cell
を導入
if let cell = cell as? AwesomeCellProtocol { ... }
で
Objective-Cのように、現在、クラスタイプとプロトコルタイプを混在させることはできません。 – Sulthan