0

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

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

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

绑定到私有 func()的语法是什么?
除了翻转布尔值之外,我还希望能够做几件事。

具体来说,我想:

  1. 切换另一个按钮的标题;
  2. 启用和清除 UITextView;和
  3. 更改 UILabel 文本。

还是在这种情况下,仅使用熟悉的切换按钮@IBAction 范例更好?

4

1 回答 1

0

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

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

然后bind(或者drive,如果你正在使用Driver)你button.rx.title的这个 Observable。UITextView清除或更改标签上的文本之类的事情需要类似的方法。

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

于 2017-10-22T23:10:04.090 回答