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

Jul*_*ius 24 ios uicollectionview uicollectionviewcell swift

我正在尝试在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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做?谢谢!

Mor*_*son 32

而对于Swift 3.0:

override var isSelected: Bool {
    didSet {
        alpha = isSelected ? 0.5 : 1.0
    }
}
Run Code Online (Sandbox Code Playgroud)


Jul*_*ius 27

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

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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在它正在运作.


osr*_*srl 13

试试这个吧.

override var selected: Bool {
    didSet {
        self.alpha = self.selected ? 0.5 : 1.0
    }
}
Run Code Online (Sandbox Code Playgroud)