2017-02-17 13 views
5

Gibt es eine Möglichkeit, eine UIPickerView mit einem Observable zu binden?RxSwift und UIPickerView

Zum Beispiel für ein UITableView ich tun würde:

myObservableArray.bindTo(tableView.rx.items(cellIdentifier: "Identifier", cellType: MyCustomTableViewCell.self)) { (row, title, cell) in 
     cell.textLabel?.text = title 
    } 
    .disposed(by: disposeBag) 

Gibt es etwas ähnliches für UIPickerView?

+0

Es gibt nichts von RxSwift Repository nutzbar aus dem Kasten heraus . Man könnte sich den Code ansehen, der für 'UITableView'-Bindungen verwendet wird, um etwas Ähnliches für' UIPickerView' zu finden, aber Sie würden eine ziemlich gute Erfahrung mit RxSwift brauchen, um zu verstehen, wie das funktioniert (zumindest, ** I * * versucht und fehlgeschlagen) – tomahh

+1

Bitte werfen Sie einen Blick auf diese Antwort: https://Stackoverflow.com/a/46225009/1953178 –

Antwort

0

bereitgestellt Datenquelle Ihres Picker wie folgt aussieht:

let pickerDataSource: [[String]] = [ ["asdadadad", "sffgddfg"], 
            ["sfsdasgag", "sdfasdfasfsf", "sdsfgagagaggs"] ] 

Sie ‚verbindlich‘ Sie müssen auf diese Weise implementieren könnte:

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)