我有一个如下所示的Collection View:
蓝色边框是图像。当我按下它们时,我希望文本和图像能够短暂地变暗。
我发现这个问题类似:
它包括Objective-C中的this answer:
如果您有CustomCell,则必须具有CustomCell.m(实现 文件)。在这个文件中添加这个,对我来说是简单的方法:
-(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
}
}
}
但是当我点击一个单元格时,我的集合视图没有明显的影响。我是在错误的地方添加它还是以错误的方式将其转换为Swift?
如果我调用方法setHighlighed
,那么我会收到错误
[PATH] /DoubleSoundsCollectionViewCell.swift:15:10:方法 ' setHighlighted'使用Objective-C选择器' setHighlighted:'冲突 使用setter突出显示'来自超类' UICollectionViewCell' 使用相同的Objective-C选择器
答案 0 :(得分:1)
因为highlighted
是Swift中的属性。
请参阅Swift中的UICollectionViewCell
声明。
public var highlighted: Bool
所以你需要覆盖这样的属性。
class DoubleSoundsCollectionViewCell : UICollectionViewCell {
override var highlighted: Bool {
didSet {
// add your implementation here
}
}
}
你应该总是在Swift中知道。如果要覆盖某些内容,则必须包含override关键字,如果编译器在没有覆盖的情况下接受它,那么你做错了。