[英]How to bind Object's property to an UIlabel using RXSwift?
我有一個 Model class 如下所示:
class Model{
var currentTemparature:String?
var minTemparature:String?
var maxTemparature:String?
init(currentTemparature:String,minTemparature:String,maxTemparature:String) {
self.currentTemparature = currentTemparature
self.maxTemparature = maxTemparature
self.minTemparature = minTemparature
}
}
我想使用 RXSwift 將這些屬性中的每一個綁定到 ViewController 中的 UILabel。
例如:
class ViewController:UIViewController{
@IBOutlet var currentTemparatureLabel: UILabel!
@IBOutlet var minTemparatureLabel: UILabel!
@IBOutlet var maxTemparatureLabel: UILabel!
func UpdateLabels(){
let model = Model.init(currentTemparature: "25", minTemparature: "20", maxTemparature: "30")
currentTemparatureLabel.text = model.currentTemparature
minTemparatureLabel.text = model.minTemparature
maxTemparatureLabel.text = model.maxTemparature
}
}
當模型屬性的值發生變化時,我想更新 label。 我怎樣才能做到這一點?
您應該擁有數據 Model 的 Observable(例如,可能從服務器獲取),然后,您可以使用.bind(yourlabel.rx.text) 將其結果直接綁定到 label
每次值發生變化時,它也會通過綁定到您的 label 來更新您的視圖
嘗試使用 BehaviorRelay
不要忘記導入RxSwift , RxCocoa
class Model{
var currentTemparature: BehaviorRelay<String?>
var minTemparature: BehaviorRelay<String?>
var maxTemparature: BehaviorRelay<String?>
init(currentTemparature:String,minTemparature:String,maxTemparature:String) {
self.currentTemparature = .init(value: currentTemparature)
self.maxTemparature = .init(value: maxTemparature)
self.minTemparature = .init(value: minTemparature)
}
}
class ViewController:UIViewController{
@IBOutlet var currentTemparatureLabel: UILabel!
@IBOutlet var minTemparatureLabel: UILabel!
@IBOutlet var maxTemparatureLabel: UILabel!
private var bag = DisposeBag()
func UpdateLabels(){
let model = Model.init(currentTemparature: "25", minTemparature: "20", maxTemparature: "30")
model.currentTemparature.bind(to: currentTemparatureLabel.rx.text).disposed(by: bag)
model.minTemparature.bind(to: minTemparatureLabel.rx.text).disposed(by: bag)
model.maxTemparature.bind(to: maxTemparatureLabel.rx.text).disposed(by: bag)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.