私はを持っています。カスタムセルを使用するUICollectionViewControllerがあります。選択されたセルを区別するために、ユーザーがセルをタップすると呼び出され、セルの背景色を緑に変更する関数があります。 問題は、ユーザーが別のセルをタップすると、前のセルが選択されていないこと、別の関数が呼び出されることです。 collectionViewがスクロールされない限り、それは正常に動作しますが、ユーザーがcollectionViewをスクロールして、選択されたものが画面の表示矩形から外れると、私の選択解除機能が機能せず、緑色の背景を持つ2つのセルがあります。UICollectionViewの不可視セルが選択されたままになっています
それはデモです:
あなたは上部の緑色の背景を持つセル、および最後にもう一つがある見ることができます。ここで
は、セルを選択し、選択解除する方法は、次のとおりです
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? CategoryCollectionViewCell {
cell.selectItem()
}
}
override func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
for _cell in collectionView.visibleCells {
if let __cell = _cell as? CategoryCollectionViewCell {
__cell.deselectItem()
}
}
if let indexPath = collectionView.indexPathsForSelectedItems {
if indexPath.count > 0 {
if let _cell = collectionView.cellForItem(at: indexPath.first!) as? CategoryCollectionViewCell {
_cell.deselectItem()
}
}
}
return true
}
で試してみてください? – KKRocks
@KKRocksいいえ、ユーザーは1つのセルのみを選択する必要があります。 – Maysam
ok try my answer – KKRocks