RXSwift:如何将value属性绑定到按钮可见性?

时间:2018-09-10 11:30:50

标签: ios swift rx-swift

我需要设置UIButton的样式取决于两个textFields中的值:

Observable.combineLatest(loginProperty.asObservable(), passwordProperty.asObservable()) { _, _ in
    self.viewModel.isValid
}.bind(to: mainView.loginButton.rx.isValid).disposed(by: bag)

我还需要根据一个文本字段中的值来设置UIButton的样式,并且上述解决方案无效。为什么?简单的方法是什么?

2 个答案:

答案 0 :(得分:0)

正如Al_在他的评论中提到的那样,combineLatest将在两个流都至少发射一个值时发射下一个值。

根据文本字段rx属性之一来设置按钮样式:

  • 您可以使用副作用(例如:.do(onNext: { ... })
  • 或只是再次订阅该物业

您使用任何扩展程序吗?由于没有属性isValid,因此,如果要更改按钮的可见性,请尝试使用mainView.loginButton.rx.isHidden

答案 1 :(得分:0)

您可以使用CombinedLatest组合电子邮件和密码来创建isButtonEnabled Observable并将值绑定到BehaviorRelay,然后从{{1}订阅onNext事件}并设置值

BehaviorRelay