【发布时间】:2016-05-30 12:28:55
【问题描述】:
我的 VC.swift 中有两个 Bool 属性:
var isRecording = false
var isPlaying = false
在 viewDidLoad() 方法中我有这样的代码:
let observable = Observable.combineLatest(self.rx_observe(Bool.self, "isRecording"), self.rx_observe(Bool.self, "isPlaying")) { (val1, val2) -> Void in
if(val1 == false && val2 == false){
self.recordButton.enabled = true
self.playButton.enabled = true
self.recordButton.setImage(UIImage(named: "record"), forState: UIControlState.Normal)
self.playButton.setImage(UIImage(named: "play"), forState: UIControlState.Normal)
} else if(val1 == true && val2 == false){
self.recordButton.enabled = true
self.recordButton.setImage(UIImage(named: "stop"), forState: UIControlState.Normal)
self.playButton.enabled = false
} else if(val1 == false && val2 == true){
self.recordButton.enabled = false
self.playButton.enabled = true
self.playButton.setImage(UIImage(named: "stop"), forState: UIControlState.Normal)
self.recordButton.setImage(UIImage(named: "record"), forState: UIControlState.Normal)
}
}.observeOn(MainScheduler.instance)
addSubscription(observable.subscribe())
函数 addSubscription(:_) 将订阅添加到 DisposableBag。 问题是闭包中的代码只工作一次。当属性“isRecording”和“isPlaying”改变时它不起作用。如果我希望在更改这些 bool 属性后执行此代码,我应该怎么做?
【问题讨论】:
-
当状态改变时更改该属性,我的意思是播放或录制将完成并重新开始。您在 viewdidload 中实现了它,因此它在加载时只调用一次。