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不与我在ViewModelinit方法设置的值开始。

之前只是结合我可以做textView.text = viewModel.text.value,但因为我使用RxSwift,我想了解什么是平常这里练习

你说得对,这是一个单向绑定,你必须手动设置文本视图的初始值。 如果你想双向绑定,看看下面的代码:

RxSwift: Two way binding

一定要导入Operators.swift文件在您的项目(https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Operators.swift

注意变量的类型必须是Variable<String?>,因为文本是UIKit中的可选字符串。