RxSwift 如何将“清除所有”UIButton 添加到简单的电子表格示例
Posted
技术标签:
【中文标题】RxSwift 如何将“清除所有”UIButton 添加到简单的电子表格示例【英文标题】:RxSwift How to add "clear all" UIButton to simple spreadsheet example 【发布时间】:2016-07-05 10:50:04 【问题描述】:这是来自 RxSwift 存储库的简单电子表格代码(添加三个数字):
Observable.combineLatest(number1.rx_text, number2.rx_text, number3.rx_text) textValue1, textValue2, textValue3 -> Int in
return (Int(textValue1) ?? 0) + (Int(textValue2) ?? 0) + (Int(textValue3) ?? 0)
.map $0.description
.bindTo(result.rx_text)
.addDisposableTo(disposeBag)
我想添加一个“全部清除”UIButton,这将导致三个框重置为零并且总数也设置为零。命令式风格,非常简单。
在 RxSwift 中添加这个按钮的正确方法是什么?
【问题讨论】:
【参考方案1】:这是我想不到的几种方法。
命令式
button.rx_tap
.subscribeNext [weak self] _ in
self?.number1.text = ""
self?.number2.text = ""
self?.number3.text = ""
.addDisposableTo(disposeBag)
但是请注意,在您更改字段之间的焦点之前,这不会更新下面的 combineLatest
Observable
。我还没有调查原因。
使用Variables
// Declared as a property
let variable1 = Variable<String>("")
// Back down in `viewDidLoad`
number1.rx_text
.bindTo(variable1)
.addDisposableTo(disposeBag)
variable1.asObservable()
.bindTo(number1.rx_text)
.addDisposableTo(disposeBag)
button.rx_tap
.subscribeNext [weak self] _ in
self?.variable1.value = ""
// and other variables as well..
.addDisposableTo(disposeBag)
Observable.combineLatest(variable1.asObservable(), ....
我省略了为variable2
和variable3
显示相同的代码,因为如果你走这条路,你可能应该创建一个双向绑定辅助方法。
【讨论】:
以上是关于RxSwift 如何将“清除所有”UIButton 添加到简单的电子表格示例的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RxSwift disposeBag 防止 UITableViewCell 中重复的 UIButton 点击
在 UICollectionViewCell 中为 UIButton 设置 rx.tap 的问题 - RxSwift 3