UICollectionView y UICollectionViewCell seleccionado

Estoy intentando hacer un simple UICollectionView con una celda personalizada compuesta por un UIImageView y una UIView arriba.

Cuando no se selecciona una celda, la vista UIView en la parte superior de la celda tiene backgroundColor propiedad backgroundColor establecida en UIColor(networking: 1, green: 1, blue: 1, alpha: 0.5) .

Tengo problemas con la selección. El método collectionView:didSelectItemAtIndexPath: se llama pero cuando cambio la UIView descrita anteriormente, no sucede nada.

Aquí está el código de mi collectionView :

 class TestCollectionViewController: UICollectionViewController { var items = [1, 2, 3] let cellId = "Cell" override func viewDidLoad() { self.collectionView.allowsMultipleSelection = true self.collectionView.delaysContentTouches = false } override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int { return items.count } override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! { var cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath) as TestingCollectionViewCell let item = items[indexPath.row] cell.imageView.image = UIImage(named: "img") cell.overlayView.backgroundColor = UIColor(networking: 1, green: 1, blue: 1, alpha: 0.5) return cell } override func collectionView(collectionView: UICollectionView!, didSelectItemAtIndexPath indexPath: NSIndexPath!) { var cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath) as TestingCollectionViewCell cell.overlayView.backgroundColor = UIColor.clearColor() } override func collectionView(collectionView: UICollectionView!, didDeselectItemAtIndexPath indexPath: NSIndexPath!) { var cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath) as TestingCollectionViewCell cell.overlayView.backgroundColor = UIColor(networking: 1, green: 1, blue: 1, alpha: 0.5) } } 

Si este fragment no es suficiente, aquí está mi proyecto

No debería estar eliminando una nueva celda en didSelectItemAtIndexPath (o en didDeselect tampoco): esto está creando (o reutilizando) una nueva celda, sin get la que seleccionó. Use esto en su lugar,

 var cell = collectionView.cellForItemAtIndexPath(indexPath) 

Para mí, el siguiente código funcionó mejor (el código de rdelmar se bloqueó a veces, lo que podría ser un error? En Swift):

 (collectionView.cellForItemAtIndexPath(indexPath) as myCollectionViewCellType).uiBackground?.backgroundColor = UIColor.blackColor() 

Edit: Olvidé mencionar: My collectionView-Items se basa en su propia class a la que reparto. uiBackground es un elemento de esa class

Swift 3.0

 let cell = collectionView.cellForItem(at: indexPath) 
  func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { //saving index path of the image loaded from imageproperty_array selected_imagepath = imageproperty_array[indexPath.row] as String //saving index of the selected cell item as Int selected_imageindex = indexPath.row }