RxSwift如何将“全部清除”UIButton添加到简单的电子表格示例

下面是一个简单的电子表格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中添加这个button的正确方法是什么?

这里有几个方法我的头顶。

势在必行

 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(), .... 

我已经省略了显示variable2variable3的相同代码,因为如果你走这条路线,你应该做一个双向绑定帮助器方法。