2016-01-10 2 views
-1

У меня в основном есть представление коллекции, где ячейки имеют вид, а альфа-альфа уменьшается при включении ячейки. По какой-то причине, когда я просматриваю представление коллекции, другие представления ячеек также изменяют альфы, а затем исходная ячейка, которую я выбрал, также изменилась. Это как-то связано с методом cellForRowAtIndexPath, но я не совсем уверен, в чем проблема. Вот мой код:Collection View Cells альфа меняется, когда он не должен

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("chooseSpace", forIndexPath: indexPath)as! ChooseSpaceCell 

    let space = spaces2[indexPath.row] 

    cell.serviceLabel.text = spaces2[indexPath.row] 

    return cell 
} 


func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

    let cell = collectionView.cellForItemAtIndexPath(indexPath) as! ChooseSpaceCell 

    cell.mask.alpha = 0.7 
} 

func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) { 

    let cell = collectionView.cellForItemAtIndexPath(indexPath) as! ChooseSpaceCell 

    cell.mask.alpha = 0.25 

} 

Первоначально все альфы начинают на 0,25, изменение 0,7 при постукивании, и изменить назад, когда не выбран. Это огромная проблема, поэтому любая помощь будет высоко оценена.

+0

Поддержание флага в объекте для каждого пути индекса .. в соответствии с этим изменением флага. –

ответ

1

Когда вы звоните

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("chooseSpace", forIndexPath: indexPath)as! ChooseSpaceCell

Вы запрашиваете ячейку с точки зрения сбора. Если есть доступная ячейка, она повторно использует уже созданную ячейку. Если ни один из них не доступен, он создает новую ячейку.

Это означает, что при прокрутке вашего вида коллекции он повторно использует те же ячейки, что и для предыдущих элементов. Если эти элементы имели непрозрачность, новые элементы, использующие эту ячейку, будут иметь одинаковую непрозрачность.

Вам необходимо добавить поле непрозрачности в вашу модель или атрибут, который поможет вам вычислить непрозрачность.