Wie zu beobachten Bool Eigenschaften mit RxSwift?

Habe ich zwei Bool-Eigenschaften in meinem VC.swift:

var isRecording = false
var isPlaying = false

In die viewDidLoad() Methode habe ich diesen code:

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())

Die Funktion addSubscription(:_) fügt Abonnement DisposableBag.
Das problem ist, dass der code im Verschluss nur einmal funktioniert. Es funktioniert nicht, wenn die Eigenschaften "isRecording" und "isPlaying" ändern. Was soll ich tun, wenn ich diese code ausgeführt werden, nachdem ich diese bool-Eigenschaften geändert?

  • Ändern Sie die Eigenschaften, wenn der status geändert wird, ich bedeutet, das Spiel oder die Aufzeichnung wird beendet und wieder neu starten. Sie setzte es in viewdidload-es ist also nur einmal aufgerufen, wenn es lädt.
InformationsquelleAutor Marina | 2016-05-30
Schreibe einen Kommentar