Я думаю, есть небольшое недоразумение о том, как ведет себя черта ControlProperty
. Давайте посмотрим на конкретное поведение, которое Программные значения не будут сообщаться
Эта наблюдаемая observationTextField.rx.text
после подписки не будет генерировать событие для обоих:
self.observationTextField.rx.text.onNext("")
или
self.observationTextField.text = ""
У меня есть 2 предложения для вашего кода:
1) Выполните работу вручную:
viewModel.addObservation.executionObservables
.subscribe({ [unowned self] _ in
self.observationTextField = ""
self.addObservationButton.isEnabled = false
})
.disposed(by: disposeBag)
2) Добавить еще одну Наблюдаемую и подписку:
//a
viewModel.addObservation.executionObservables
.map { _ in return "" }
.bind(to: observationTextField.rx.text)
.disposed(by: disposeBag)
viewModel.addObservation.executionObservables
.map { _ in return false }
.bind(to: addObservationButton.rx.isEnabled)
.disposed(by: disposeBag)
//b
let executionObservables = viewModel.addObservation
.executionObservables
.share()
executionObservables
.map { _ in return "" }
.bind(to: observationTextField.rx.text)
.disposed(by: disposeBag)
executionObservables
.map { _ in return false }
.bind(to: addObservationButton.rx.isEnabled)
.disposed(by: disposeBag)
Не уверен, как реализован Action
, чтобы предотвратить выполнение работы дважды, возможно, вам придется делиться ресурсами.