【问题标题】:Swift - Call subclass method on change in variable of super classSwift - 在超类的变量更改时调用子类方法
【发布时间】:2018-11-17 00:00:52
【问题描述】:

我有一个超类 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 类由地图视图和列表视图组成,它处理两个视图之间的切换。 B 类继承 A 并在视图顶部有按钮,该按钮应仅在列表视图中显示,而不是在地图视图中显示。

所以,当视图在列表视图和地图视图之间切换时,我想更改 button.isVisible 属性,该属性在 B 类 中处理,在 中处理>A 类

【问题讨论】:

    标签: ios swift inheritance subclass superclass


    【解决方案1】:

    您需要在子类中覆盖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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 2019-05-19
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多