带图像的UICollectionView单元格,在Swift中单击更改背景

时间:2015-10-03 13:36:16

标签: ios swift uicollectionviewcell

我有一个如下所示的Collection View:

enter image description here

蓝色边框是图像。当我按下它们时,我希望文本和图像能够短暂地变暗。

我发现这个问题类似:

它包括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选择器

1 个答案:

答案 0 :(得分:1)

因为highlighted是Swift中的属性。

请参阅Swift中的UICollectionViewCell声明。

public var highlighted: Bool

所以你需要覆盖这样的属性。

class DoubleSoundsCollectionViewCell : UICollectionViewCell {

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

你应该总是在Swift中知道。如果要覆盖某些内容,则必须包含override关键字,如果编译器在没有覆盖的情况下接受它,那么你做错了。