我是一個學習RxSwift的新手。綁定到UITextField的rx_text沒有觸發UITextField的發射事件
我修改了RxSwift示例應用程序中的簡單數字示例,該應用程序將在結果編號中添加三個數字。
我加了一個testStr
UITextField
和一個upperCase
UILabel
。我將testStr
映射爲大寫,bindTo
爲upperCase
標籤,這很好。而且我還將testStr
映射到其length
和bindTo
的num1
字段。奇怪的事情發生,儘管num1
字段的內容發生變化,但它不發出任何事件,因此它對result
標籤沒有影響。即使我將某個號碼輸入到另一個號碼字段中,result
號碼也不會計入num1
。
我做了任何錯誤的使用bindTo
?我怎樣才能讓num1
發出一個事件?
謝謝!
@IBOutlet weak var num1: UITextField!
@IBOutlet weak var num2: UITextField!
@IBOutlet weak var num3: UITextField!
@IBOutlet weak var result: UILabel!
@IBOutlet weak var testStr: UITextField!
@IBOutlet weak var upperCase: UILabel!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Observable.combineLatest(num1.rx_text, num2.rx_text, num3.rx_text) {
(textval1, textval2, textval3) -> Int in
return (Int(textval1) ?? 0) + (Int(textval2) ?? 0) + (Int(textval3) ?? 0)
}
.map{$0.description}
.bindTo(result.rx_text)
.addDisposableTo(disposeBag)
let obStr = testStr.rx_text
obStr
.map {$0.uppercaseString}
.bindTo(upperCase.rx_text)
.addDisposableTo(disposeBag)
obStr
.map{ $0.characters.count }
.map{ $0.description }
.bindTo(num1.rx_text)
.addDisposableTo(disposeBag)
}