【发布时间】:2019-04-27 23:29:12
【问题描述】:
如何从ViewController 观察ViewModel 类中Variable<...> 值(RxSwiftVariable) 的变化?
因此,如果我在ViewModel 中的任何Variable<..> 的值在ViewModel 中发生的事情中发生变化,那么ViewController 将被注意到“嘿!一个或多个变量 在 ViewModel 中发生了变化!向 ViewModel 询问你需要更新 UI 并更新 UI 的数据!”
然后ViewController 在 ViewController 中调用方法 updateUI() 并在其中向 ViewModel 询问所有信息,例如状态/状态,以更新 UI,如下所示:
func updateUI() {
progressBar.hide = viewModel.getProgressBarVisibility()
errorMessageLabel.hide = viewModel.getErrorMessageVisibility()
errorMessageLabel.text = viewModel.getErrorMessageText()
.....
...
}
【问题讨论】:
-
您可以使用
combineLatest运算符,以便您的任何可观察对象发生的任何更改都会触发它,您可以将其值分配给viewModel 中的属性并在viewController 中订阅它。还有不推荐使用变量尝试使用subjects。 -
仅供参考。 Observables 是一个“告诉不问”的系统。您的视图控制器不应“向 ViewModel 询问数据”。相反,视图控制器告诉 ViewModel 中的变量他们对更改感兴趣(通过 subscribe 函数),然后变量告诉视图控制器新值是什么因为他们被改变了。当然,
Variable已被弃用。
标签: ios swift observer-pattern rx-swift