Swift - вызов метода подкласса при изменении переменной суперкласса - PullRequest
0 голосов
/ 07 июня 2018

У меня есть суперкласс A и подкласс B. Оба являются ViewControllers.Код выглядит следующим образом:

class A {
    var a : Bool = false
}

class B : A {
    var b : Int = 10
    func changeB() {
        b = 20
    }
}

Итак, есть переменная a в классе A. Всякий раз, когда она изменяется, она должна изменять переменную b класса B, то есть она должна вызывать метод changeB (), который обновитb.

Один из способов добиться этого - использовать события для вызова метода changeB () , который обновит b .

.способ достичь того же?

Это просто шаблон для понимания другими.Фактическая проблема - класс А состоит из вида карты и списка, и он обрабатывает переключение между двумя видами.Класс B наследует A и имеет кнопку в верхней части представления, которая должна отображаться только для представления списка, а не для представления карты.

Итак, я хочу изменить свойство button.isVisible , котороенаходится в классе B , когда представление переключается между представлением списка и представлением карты, которое обрабатывается в классе A .

1 Ответ

0 голосов
/ 07 июня 2018

Вам необходимо переопределить a в своем подклассе, чтобы вы могли вызывать changeB из его установщика.

class B : A {
    var b : Int = 10
    override var a: Bool {
        set {
            super.a = newValue
            self.changeB()
        }
        get {
            return super.a
        }
    }

    func changeB() {
        b = 20
    }
}
...