web-dev-qa-db-fra.com

Essayer de remplacer "sélectionné" dans UICollectionViewCell Swift pour l'état de sélection personnalisé

J'essaie d'implémenter un style de sélection personnalisé pour mes cellules dans un UICollectionView. Même s'il est facilement possible de le faire manuellement dans les méthodes didSelect et didDeSelect, je voudrais y parvenir en manipulant la variable "sélectionnée" dans UICollectionViewCell.

J'ai ce code pour ça:

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

Maintenant, lorsque je sélectionne une cellule, la cellule est mise en surbrillance mais "sélectionné" est imprimé deux fois et la désélection ne fonctionne pas (même si les deux méthodes UICollectionView sont implémentées).

Comment pourrais-je m'y prendre? Merci!

23
Julius

Et pour Swift 3.0:

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

Je l'ai compris en entrant dans le code. Le problème était que le super.selected n'était pas en cours de modification. J'ai donc changé le code en ceci:

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

Maintenant ça marche.

27
Julius

Essaye celui-là.

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