2017-04-07 8 views
1

Ich arbeite an RxSwift und begann mit der Erstellung einiger weniger. Ich habe neue Schaltfläche hinzugefügt, aber mit rx_tap abonnieren nicht für die Schaltfläche Aktion arbeiten. Unten ist mein Code, lassen Sie mich bitte wissen, was ich tue, falschRxSwift arbeitet nicht mit UIButton

let button = UIButton(frame: CGRect(x: 10, y: 66, width: 100, height: 21)) 
    button.backgroundColor = UIColor.redColor() 
    button.setTitle("Login", forState: UIControlState.Normal) 

    let disposeBag = DisposeBag() 
    button.rx_tap 
     .subscribe { [weak self] x in 
      self!.view.backgroundColor = UIColor.redColor() 
    } 
    .addDisposableTo(disposeBag) 
    self.view.addSubview(button) 

Antwort

5

Ihr Abonnement wird sofort abgebrochen, weil der Umfang Ihrer DisposeBag. Es wird erstellt, erlischt dann und wird sofort freigegeben. Sie müssen Ihre Tasche irgendwo aufbewahren. Wenn Sie einen View-Controller oder etwas Ähnliches verwenden, können Sie dort eine Eigenschaft erstellen und diese zuweisen.

+0

Dank Dima, können Sie bitte mit Beispielcode für das gleiche erklären, das wird wirklich große Hilfe sein – Kashif

+0

move 'let disposeBag = DisposeBag()' aus dieser Funktion und als eine Eigenschaftserklärung in der enthaltenden Klasse. Wenn Sie das tun, wird der Rest Ihres Codes funktionieren. – Dima

+0

Wow, es funktioniert wie ein Zauber, danke für die große Hilfe, ich werde immer dankbar sein, ich bin sehr neu in RxSwift und es verursacht mir viel Verwirrung. – Kashif