I\'m easily able to change the background color of a cell in the CellForItemAtIndexPath
method
func collectionView(collectionView: UICollectionView,
Old question, but it can help someone:
You can't simply modify the cell, since your changes will be lost when you scroll your UICollectionView
, or even worst, other cells could appear with a wrong background, because they'll be reused.
So, the best way to do that is create an array of NSIndexPath
and append your selected indexPaths:
var selectedIndexes = [NSIndexPath]() {
didSet {
collectionView.reloadData()
}
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){
// ...
if let indexSelecionado = selectedIndexes.indexOf(indexPath) {
selectedIndexes.removeAtIndex(indexSelecionado)
} else {
selectedIndexes.append(indexPath)
}
}
// ...
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// ...
if self.selectedIndexes.indexOf(indexPath) == nil {
cell.backgroundColor = UIColor.whiteColor() // Unselected
} else {
cell.backgroundColor = UIColor.redColor() // Selected
}
return cell
}