所以我在touchableView
中有自定义视图ViewController
。
touchableView
通过委托协议(ViewController
为ViewController
)通知delegate
其属性发生了变化。
从touchableView
更改ViewController
的属性的最佳方法是什么(反之亦然)?
有没有办法在两个类之间创建双向委托关系?
答案 0 :(得分:1)
<强>简单地:强>
假设您已在touchableView
中拥有ViewController
个实例,您应该能够设置-or get- / call其属性和方法。
例如,假设您在touchableView
class中有以下方法:
class func fromNib() -> TouchableView {
return Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil)![0] as! TouchableView
}
你应该能够:
let touchableView = TouchableView.fromNib()
因此:
// for example
touchableView.myProperty = "Hello"
我假设TouchableView
有一个名为myProperty
的字符串属性...
<强>注:强>
出于某种原因,我建议在TouchableView
中实现一些属性观察器:
财产观察员观察并回应房产的变化 值。每次物业的价值都会调用物业观察员 设置,即使新值与属性的当前值相同 值。
在自定义类中实现它们可能是有用的。为清楚起见,我们考虑 - 例如 - 如果编辑myProperty
的值应该影响视图的背景颜色,则可以实现为:
var myProperty: String = "Initial Value" {
willSet {
print("About to set value to: \(newValue)")
}
didSet {
backgroundColor = UIColor.red
}
}
进一步阅读:
如果您正在寻找双向绑定的高级方法(实现MVVM),您可能需要检查this article。
我还建议看看一些对这种方法非常有用的框架,例如RxSwift,对于更简单的框架,您可能需要检查ReactiveKit/Bond。< / p>