我有以下要绑定到UITextField和UISegmentedControl的ViewModel。我能够成功绑定到UITextField,但是UISegmentedControl绑定不起作用,因为我推荐的数据类型是枚举。
enum Recommend: Int {
case yes = 0
case no = 1
}
struct FeedbackViewModel {
var name = Variable<String>("")
var recommend = Variable<Recommend>(.yes)
}
在我的视图控制器中,我具有以下绑定:
private func configureBindings(){
self.nameTextField.rx.text
.orEmpty
.bind(to: self.feedbackViewModel.name)
.disposed(by: disposeBag)
self.recommendSegmentedControl.rx.value
.bind(to: self.feedbackViewModel.recommend.value.rawValue)
.disposed(by: disposeBag)
}
对于RecommendationSegmentedControl绑定,出现以下错误:
Cannot invoke 'bind' with an argument list of type '(to: Int)'
答案 0 :(得分:1)
您必须首先创建一个Recommend
值。
self.recommendSegmentedControl.rx.value
.map(Recommend.init(rawValue:))
.filter { $0 != nil }.map { $0! }
.bind(to: self.feedbackViewModel.recommend)
.disposed(by: disposeBag)
如果您想冒险的话,也可以这样做:
self.recommendSegmentedControl.rx.value
.map { Recommend.init(rawValue: $0)! }
.bind(to: self.feedbackViewModel.recommend)
.disposed(by: disposeBag)