代わりdidSelectItemAtIndexPath
に色を設定する次のようにする必要があり、そのためにcellForItemAtIndexPath
に色を設定Int
のインスタンスを宣言し、collectionView
の行をこのようなインスタンス内に格納します。
var selectedRow: Int = -1
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath:NSIndexPath)->UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CELL", forIndexPath: indexPath) as! InterestCollectionViewCell
// Set others detail of cell
if self.selectedRow == indexPath.item {
cell.backgroundColor = UIColor.redColor()
}
else {
cell.backgroundColor = UIColor.clearColor()
}
return cell
}
は今didSelectItemAtIndexPath
にselectedRow
がcollectionView
をリロード設定しました。
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if self.selectedRow == indexPath.item {
self.selectedRow = -1
}
else {
self.selectedRow = indexPath.item
}
self.collectionView.reloadData()
}
編集:複数のセルを選択するためはindexPath
のアレイを作成し、このようなindexPathのオブジェクトを格納します。
var selectedIndexPaths = [NSIndexPath]()
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath:NSIndexPath)->UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CELL", forIndexPath: indexPath) as! InterestCollectionViewCell
// Set others detail of cell
if self.selectedIndexPaths.contains(indexPath) {
cell.backgroundColor = UIColor.redColor()
}
else {
cell.backgroundColor = UIColor.clearColor()
}
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if self.selectedIndexPaths.contains(indexPath) {
let index = self.selectedIndexPaths.indexOf(indexPath)
self.selectedIndexPaths.removeAtIndex(index)
}
else {
self.selectedIndexPaths.append(indexPath)
}
self.collectionView.reloadData()
}
こんにちはNirav、あなたの答えに感謝します。複数のセルが呼び出され、色が元に戻ってしまう問題を修正しました。しかし、ユーザーが複数のアイテムをタップできるように、複数の選択を可能にするアプローチを知っていますか? – WoShiNiBaBa
@WoShiNiBaBa編集済みの回答を複数選択してチェックしてください:) –