В RxSwift/RxCocoa 2.0.0- беты 3, у меня есть ViewModel с:Использование RxSwift, как включить UIButton на основе допустимого текста?
let someString = Variable("")
func isValidSomeString() -> Observable<Bool> {
if someString.value.characters.count == 0 {
return just(false)
}
return just(true)
}
Я имею SomeString связанное уже в текстовом поле в ViewController.
Всякий раз, когда изменяется someString (или, возможно, текстовое поле, если это лучший способ), я хочу, чтобы кнопка включалась на основе if someString.
Я пробовал использовать «Наблюдаемый < Bool>», но начал спускаться по другому пути. Я мог бы сделать это в ViewController:
someViewModel.someString.subscribeNext { text -> Void in
// could just someUIButton.enabled = someViewModel.isValidSomeString(text)
}.addDisposableTo(disposeBag)
Не существует еще один способ, который менее многословен, чем (текст) подход isValidSomeString? У нас уже был хороший успех с isValidLogin, который возвращает Observable < Bool> который использовал combLatest.
As а также используя пример выше, можно также просто вернуть self.someString.map {! $ 0.isEmpty} в isValidSomeString. В контроллере просмотра привяжите someUIButton.rx_enabled к элементу someViewModel.isValidSomeString() – finneycanhelp