Попытка переопределить "выбранный" в UICollectionViewCell Swift для пользовательского состояния выбора

Я пытаюсь реализовать пользовательский стиль выделения для своих ячеек в UICollectionView. Несмотря на то, что это легко можно сделать вручную в методах didSelect и didDeSelect, которые я хотел бы достичь, манипулируя "выбранной" переменной в UICollectionViewCell.

У меня есть для этого код:

    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 реализованы).

Как я могу это сделать? Спасибо!

Ответы

Ответ 1

И для Swift 3.0:

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

Ответ 2

Выяснил это, перейдя в код. Проблема заключалась в том, что super.selected не изменялся. Поэтому я изменил код на это:

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")
        }
    }
}

Теперь он работает.

Ответ 3

Попробуйте это.

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