Swift - 在 super class 的变量发生变化时调用 subclass 方法
Swift - Call subclass method on change in variable of super class
我有一个 superclass A 和 subclass B。两者都是 ViewController。代码如下:
class A {
var a : Bool = false
}
class B : A {
var b : Int = 10
func changeB() {
b = 20
}
}
因此,class A 中有一个变量 a。每当它发生变化时,它应该更改 class B 的变量 b,即它应该调用一个方法 changeB() 来更新 b。
实现此目的的一种方法是使用事件调用方法 changeB(),该方法将更新 b.
有没有其他方法可以达到同样的效果?
这只是供其他人理解的模板。实际问题是 - Class 由地图视图和列表视图组成,它处理 2 个视图之间的切换。 Class B 继承了 A 并且在视图顶部有一个按钮,该按钮应该只显示在列表视图中而不是地图视图中。
所以,我想改变我的button.isVisible 属性,它在class B,当视图在列表视图和地图视图之间切换时,在class A.
中处理
您需要在您的子类中覆盖 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
}
}
我有一个 superclass A 和 subclass B。两者都是 ViewController。代码如下:
class A {
var a : Bool = false
}
class B : A {
var b : Int = 10
func changeB() {
b = 20
}
}
因此,class A 中有一个变量 a。每当它发生变化时,它应该更改 class B 的变量 b,即它应该调用一个方法 changeB() 来更新 b。
实现此目的的一种方法是使用事件调用方法 changeB(),该方法将更新 b.
有没有其他方法可以达到同样的效果?
这只是供其他人理解的模板。实际问题是 - Class 由地图视图和列表视图组成,它处理 2 个视图之间的切换。 Class B 继承了 A 并且在视图顶部有一个按钮,该按钮应该只显示在列表视图中而不是地图视图中。
所以,我想改变我的button.isVisible 属性,它在class B,当视图在列表视图和地图视图之间切换时,在class A.
中处理您需要在您的子类中覆盖 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
}
}