RxSwift初始值绑定时可变
问题描述:
我有以下代码:RxSwift初始值绑定时可变
import RxSwift
import RxCocoa
class ViewModel {
var text = Variable<String>("")
init() {
text.value = "hello"
}
}
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var counterLabel: UILabel!
var viewModel = ViewModel()
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
textView.rx.text
.orEmpty
.debug()
.bind(to: viewModel.text)
.disposed(by: disposeBag)
}
}
的结合工作正常(当我改变了UITextView
它正确地更新viewModel
然而,由于结合是单向的(或因此我。理解),该textView
不与我在ViewModel
的init
方法设置的值开始。
之前只是结合我可以做textView.text = viewModel.text.value
,但因为我使用RxSwift,我想了解什么是平常这里练习
答
你说得对,这是一个单向绑定,你必须手动设置文本视图的初始值。 如果你想双向绑定,看看下面的代码:
一定要导入Operators.swift文件在您的项目(https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Operators.swift)
注意变量的类型必须是Variable<String?>
,因为文本是UIKit中的可选字符串。