所以我在touchableView
中有一个自定义视图ViewController
。touchableView
通过委托协议(ViewController
是ViewController
)将其属性的更改通知给delegate
。
从touchableView
更改ViewController
属性的最佳方法是什么(反之亦然)?
有没有一种方法可以在两个类之间创建双向委托关系?
最佳答案
只需:
假设您已经在touchableView
中具有ViewController
实例,则应该可以设置-或get- /调用其属性和方法。
例如,假设您在touchableView
类中具有以下方法:
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。