将函数绑定到切换按钮的语法是什么?

时间:2017-10-19 18:55:34

标签: rx-cocoa

以下是一个教程代码片段,它将切换开关绑定到活动指示器:

 aSwitch.rx.value
    .map { !$0 }
    .bind(to: activityIndicator.rx.isHidden)
    .disposed(by: disposeBag)

 aSwitch.rx.value.asDriver()
    .drive(activityIndicator.rx.isAnimating)
    .disposed(by: disposeBag)

绑定到 private func()的语法是什么?
我想除了翻转一个布尔值之外还能做几件事。

具体来说,我想:

  1. 切换另一个按钮的标题;
  2. 启用&清除UITextView;和
  3. 更改UILabel文字。
  4. 或者在这种情况下,仅仅使用熟悉的切换按钮@IBAction范例会更好吗?

1 个答案:

答案 0 :(得分:0)

如果其他按钮的标题取决于UISwitch的值,那么您应该执行以下操作:

let buttonText = aSwitch.rx.value.map { $0 ? "Button is on" : "Button is off" }

然后bind(或drive,如果您使用Driverbutton.rx.title到此Observable。清除UITextView或更改标签上的文字等内容需要采用类似的方法。

如果您的UIView元素不仅仅依赖于切换的状态,那么需要比仅使用map更复杂的结构,例如使用withLatestFromcombineLatest或其他运算符(请参阅:http://www.rxmarbles.com)。由于这引入了一堆新的复杂性,在所谓的ViewModel中包含这种逻辑是很常见的。有很多文章详细说明了所谓的MVVM模式如何与rxSwift一起工作。