[英]RxSwift and UIPickerView
Is there a way to bind a UIPickerView
with an Observable?有没有办法将
UIPickerView
与 Observable 绑定?
For example for a UITableView
I would do:例如对于
UITableView
我会这样做:
myObservableArray.bindTo(tableView.rx.items(cellIdentifier: "Identifier", cellType: MyCustomTableViewCell.self)) { (row, title, cell) in
cell.textLabel?.text = title
}
.disposed(by: disposeBag)
Is there something similar for UIPickerView
? UIPickerView
有类似的东西吗?
As a matter of fact there is, in the RxCocoa library:事实上,在 RxCocoa 库中有:
Example:例子:
let items = Observable.just([
"First Item",
"Second Item",
"Third Item"
])
items
.bind(to: pickerView.rx.itemTitles) { (row, element) in
return element
}
.disposed(by: disposeBag)
There's also:还有:
items
.bind(to: pickerView.rx.items) { (row, element, view) in
guard let myView = view as? MyView else {
let view = MyView()
view.configure(with: element)
return view
}
myView.configure(with: element)
return myView
}
.disposed(by: disposeBag)
Provided data source of your picker looks like this:提供的选择器数据源如下所示:
let pickerDataSource: [[String]] = [ ["asdadadad", "sffgddfg"],
["sfsdasgag", "sdfasdfasfsf", "sdsfgagagaggs"] ]
you could implement 'binding' you need in this way:您可以通过这种方式实现您需要的“绑定”:
pickerView.rx.itemSelected.subscribe(onNext: { [weak self] row, component in
guard let s = self else { return }
s.label.text = s.pickerDataSource[component][row]
}).addDisposableTo(disposeBag)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.