我正在尝试为UIPickerView设置初始值。
这是我的代码示例:
@IBOutlet weak var pickerView: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
Observable.just([1, 2, 3])
.bind(to: pickerView.rx.itemTitles) { _, item in
return "\(item)"
}
.disposed(by: disposeBag)
pickerView.rx.modelSelected(Int.self)
.subscribe(onNext: { models in
print("models selected 1: \(models)")
})
.disposed(by: disposeBag)
}
我不知道如何使用我的ViewModel进行双向绑定或只设置初始值。
欢迎任何想法!
答案 0 :(得分:0)
我建议在viewmodel中创建一个变量:Variable。在viewcontroller中,使该变量可观察并绑定到pickerview。如果更改变量的值,它将自动反映在pickerview中。
示例代码段可以是:
//viewmodel file: --------------
var dataSourceArray: Variable<[String]> = Variable([])
//somewhere after receiving data: add to data source
dataSourceArray.value.append(YOUR_NEW_DATA)
////// viewcontroller file----------------
self.viewModel.dataSourceArray.asObservable().bind(to: pickerView.rx.itemTitles) { _, item in
return "\(item)"
}
.disposed(by: disposeBag)
如果有的话,请忽略一些语法。让我知道任何进一步的帮助。
答案 1 :(得分:0)
实际上,使用UIPickerView自己的方法很好;
mPicker.selectRow(defaultRowIndex,inComponent:0,动画:false)
答案 2 :(得分:0)
基于@ halley-wang的回答,我在RxSwift存储库中找到了一个解决方案:https://github.com/ReactiveX/RxSwift/blob/master/Tests/RxCocoaTests/UIPickerView%2BRxTests.swift#L169-L170
所以,这是我的代码:
supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />