我基本上有一个集合视图,其中单元格具有视图,并且当单击该单元格时该视图的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,并在取消选择时返回。这是一个很大的问题,所以任何帮助都会受到高度赞赏。
答案 0 :(得分:1)
致电时
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("chooseSpace", forIndexPath: indexPath)as! ChooseSpaceCell
您正在从集合视图中请求单元格。如果有可用的单元格,它将重用已经创建的单元格。如果没有可用,则会创建一个新单元格。
这意味着当您滚动集合视图时,它将重用您用于以前项目的相同单元格。如果那些项目有不透明度已更改,则使用该单元格的新项目将具有相同的不透明度。
您需要在模型中添加不透明度字段或帮助您计算不透明度的属性。