以下是一个教程代码片段,它将切换开关绑定到活动指示器:
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()的语法是什么?
我想除了翻转一个布尔值之外还能做几件事。
具体来说,我想:
或者在这种情况下,仅仅使用熟悉的切换按钮@IBAction范例会更好吗?
答案 0 :(得分: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
更复杂的结构,例如使用withLatestFrom
,combineLatest
或其他运算符(请参阅:http://www.rxmarbles.com)。由于这引入了一堆新的复杂性,在所谓的ViewModel中包含这种逻辑是很常见的。有很多文章详细说明了所谓的MVVM
模式如何与rxSwift一起工作。