尝试在UICollectionViewCell Swift中覆盖“selected”以获取自定义选择状态

时间:2015-07-09 23:21:24

标签: ios swift uicollectionview uicollectionviewcell

我正在尝试在UICollectionView中为我的单元格实现自定义选择样式。尽管可以在didSelect和didDeSelect方法中手动执行此操作,但我希望通过操作UICollectionViewCell中的“selected”变量来实现此目的。

我有这个代码:

    override var selected: Bool {
    get {
        return super.selected
    }
    set {
        if newValue {
            self.imageView.alpha = 0.5
            println("selected")
        } else if newValue == false {
            self.imageView.alpha = 1.0
            println("deselected")
        }
    }
}

现在,当我选择一个单元格时,单元格会突出显示,但“选中”会被打印两次并且取消选择不起作用(即使实现了两个UICollectionView方法)。

我该怎么做?谢谢!

3 个答案:

答案 0 :(得分:30)

对于Swift 3.0:

override var isSelected: Bool {
    didSet {
        alpha = isSelected ? 0.5 : 1.0
    }
}

答案 1 :(得分:26)

通过踩到代码来弄清楚它。问题是超级选择没有被修改。所以我把代码更改为:

override var selected: Bool {
    get {
        return super.selected
    }
    set {
        if newValue {
            super.selected = true
            self.imageView.alpha = 0.5
            println("selected")
        } else if newValue == false {
            super.selected = false
            self.imageView.alpha = 1.0
            println("deselected")
        }
    }
}

现在它正在运作。

答案 2 :(得分:13)

试试这个。

override var selected: Bool {
    didSet {
        self.alpha = self.selected ? 0.5 : 1.0
    }
}