UICollectionView单元格与图像,在Swift中点击更改背景

我有一个集合视图,看起来像这样:

在这里输入图像说明

蓝色的边框是一个图像。 当我按下它们时,我想让文字和图像变暗。

我发现这个问题是类似的:

  • UICollectionView单元格与图像,点击更改背景

它包含在Objective-C中的这个答案 :

如果你有一个CustomCell,你必须有一个CustomCell.m(实现文件)。 在这个文件中join这个,对我来说是简单的方法:

-(void)setHighlighted:(BOOL)highlighted { if (highlighted) { self.layer.opacity = 0.6; // Here what do you want. } else{ self.layer.opacity = 1.0; // Here all change need go back } } 

我试图添加到我的自定义UICollectionViewCell像这样:

 import UIKit class DoubleSoundsCollectionViewCell: UICollectionViewCell { @IBOutlet weak var cellLabel: UILabel! func highlighted(highlighted: Bool) { if (highlighted) { self.layer.opacity = 0.6; // Here what do you want. } else{ self.layer.opacity = 1.0; // Here all change need go back } } } 

但是当我点击一个单元格时,对我的collections视图没有明显的影响。 我把它添加到了错误的地方,还是我错误地把它转换成了Swift?

如果我调用setHighlighed方法,那么我得到的错误

[PATH] /DoubleSoundsCollectionViewCell.swift:15:10:使用Objective-Cselect器的setHighlighted方法setHighlighted setHighlighted:与具有相同Objective-Cselect器的超类“UICollectionViewCell”中的“突出显示”的setter冲突

因为highlighted是Swift中的一个属性。

请参阅Swift中的UICollectionViewCell声明。

 public var highlighted: Bool 

所以你需要重写这个属性。

 class DoubleSoundsCollectionViewCell : UICollectionViewCell { override var highlighted: Bool { didSet { // add your implementation here } } } 

你应该总是知道在Swift中。 如果你重写了一些东西,如果编译器接受它,而你没有重写,那么你必须包含override关键字,那么你做错了什么。