集合视图单元格alpha正在改变它不应该

时间:2016-01-10 03:33:01

标签: ios swift collectionview

我基本上有一个集合视图,其中单元格具有视图,并且当单击该单元格时该视图的alpha减少。出于某种原因,当我在集合视图中滚动时,其他单元格视图也会更改alphas,然后我选择的原始单元格也会更改回来。它与cellForRowAtIndexPath方法有关,但我不完全确定问题是什么。这是我的代码:

 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

}

最初,所有alphas都从0.25开始,在点击时变为0.7,并在取消选择时返回。这是一个很大的问题,所以任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

致电时

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

您正在从集合视图中请求单元格。如果有可用的单元格,它将重用已经创建的单元格。如果没有可用,则会创建一个新单元格。

这意味着当您滚动集合视图时,它将重用您用于以前项目的相同单元格。如果那些项目有不透明度已更改,则使用该单元格的新项目将具有相同的不透明度。

您需要在模型中添加不透明度字段或帮助您计算不透明度的属性。