Swift - 在超类变量中调用子类方法

时间:2018-06-07 07:11:14

标签: ios swift inheritance subclass superclass

我有一个超类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

还有其他方法可以达到同样的目的吗?

这只是其他人理解的模板。实际问题是 - A类由地图视图和列表视图组成,它处理2个视图之间的切换。 B类继承A并且在视图顶部有一个按钮,该按钮只应显示在列表视图中,而不能显示在地图视图中。

所以,当视图在列表视图和地图视图之间切换时,我希望更改类B 中的 button.isVisible 属性> A级。

1 个答案:

答案 0 :(得分:1)

您需要覆盖子类中的a,以便可以从其setter中调用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
    }
}