Estoy tratando de implementar una selección personalizada de estilo para mi las células en un UICollectionView. Aunque es fácilmente posible hacerlo manualmente en el didSelect y didDeSelect métodos que me gustaría lograr esto mediante la manipulación de los «seleccionados» de la variable en UICollectionViewCell.

Tengo este código:

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

Ahora, al seleccionar una celda, la celda se pone de relieve, pero «seleccionado» que se imprime dos veces y la deselección no funciona (a pesar de que ambos UICollectionView métodos son implementados).

Cómo se podría ir sobre esto? Gracias!

  • Has probado a poner un punto de interrupción y el seguimiento cuando el primer «seleccionado» se golpeó?
  • Gracias. Me ayudó a resolver el problema. super.seleccionada no estaba siendo modificado
InformationsquelleAutor Julius | 2015-07-09

3 Comentarios

  1. 32

    Y para Swift 3.0:

    override var isSelected: Bool {
        didSet {
            alpha = isSelected ? 0.5 : 1.0
        }
    }
    • Este debería ser seleccionada como una respuesta, porque corresponde a la versión más reciente de iOS y utiliza sólo didSet.
    • ¿Por qué es isSelected llama cuando el desplazamiento?
  2. 27

    Descubierto por entrar en el código. El problema era que el super.seleccionada no estaba siendo modificado. Así que he cambiado el código para esto:

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

    Ahora funciona.

    • Me alegro de que funciona! Usted debe ser capaz de marcar la respuesta como correcta pronto
    • genial..!! ayudado que (Y) y los pulgares para arriba para responder propia pregunta
    • Tal vez agregar una actualización rápida 3. seleccionado no es «isSelected»
  3. 13

    Probar este.

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

Dejar respuesta

Please enter your comment!
Please enter your name here