RxSwift: el campo UILabel no se actualiza cuando UITextField se actualizó mediante progtwigción

Estoy aprendiendo RxSwift y tengo un ejemplo simple que no estoy seguro de por qué no funciona. Tengo un campo de text y un campo de label. CUANDO cambie el campo de text, me gustaría que se actualice el campo de label. Si escribo el campo de text, todo funciona como se esperaba. Si configuro el campo de text mediante progtwigción, como cuando presiono un button y establezco explícitamente el campo de text, el campo de label no se actualiza.

import UIKit import RxSwift import RxCocoa class ViewController: UIViewController { @IBOutlet weak var myTextField: UITextField! @IBOutlet weak var myLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() myTextField.rx_text.bindTo(myLabel.rx_text) } @IBAction func pBtn(sender: UIButton) { myTextField.text = "45" } } 

¿Cómo puedo actualizar el campo de label? He visto muchos ejemplos pero no puedo encontrar uno que responda a esta pregunta.

Cambia tu código a esto:

 @IBAction func pBtn(sender: UIButton) { myTextField.text = "45" myTextField.sendActionsForControlEvents(.ValueChanged) } 

Como el text es una propiedad, no hay un mecanismo para saber cuándo se cambia mediante progtwigción. En cambio, RxCocoa utiliza events de control para saber cuándo ha cambiado el valor. Eche un vistazo a UIControl + RxSwift.swift y encontrará algo como esto:

 let controlTarget = ControlTarget(control: control, controlEvents: [.EditingChanged, .ValueChanged]) { control in observer.on(.Next(getter())) }