IOS RxSwift中UISearch栏文本和视图模型属性之间的两种方式绑定
Posted
技术标签:
【中文标题】IOS RxSwift中UISearch栏文本和视图模型属性之间的两种方式绑定【英文标题】:Two way binding between UISearch bar text and view model property in IOS RxSwift 【发布时间】:2020-09-10 19:44:54 【问题描述】:我有以下代码来设置绑定。
viewModel.searchTerm
.bind(to: searchBar.rx.text)
.disposed(by: self.disposeBag)
基本上,我正在考虑在视图模型属性“searchTerm”和 UISearchBar 的文本属性之间设置两种方式的绑定。
视图模型属性已在视图模型中定义如下:
var searchTerm = BehaviorRelay<String>(value: "")
这似乎是一种单向绑定,当用户在 UISearchBar 中输入文本时,我没有看到视图模型属性得到更新。
我应该如何修改它以设置双向绑定?
【问题讨论】:
【参考方案1】:您拥有的代码从视图模型转到 UI 元素。您需要做的就是添加从元素到视图模型的代码。
searchBar.rx.text
.bind(to: viewModel.searchTerm)
.dispose(by: disposeBag)
这是因为 UI 元素在以编程方式更改时不会发出值,只有在用户更改时才会发出值。
也就是说,我不推荐双向绑定。您应该尽可能保持单向数据流。
【讨论】:
以上是关于IOS RxSwift中UISearch栏文本和视图模型属性之间的两种方式绑定的主要内容,如果未能解决你的问题,请参考以下文章