ios - Rx swift : Two way binding

标签 ios swift data-binding rx-swift

我用了official two-way-binding solution

func <-> <T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable{
let bindToUIDisposable = variable.asObservable()
    .bindTo(property)

let bindToVariable = property
    .subscribe(onNext: { n in
        variable.value = n
    }, onCompleted:  {
        bindToUIDisposable.dispose()
    })

return Disposables.create(bindToUIDisposable, bindToVariable)
}

用法:(textField.rx.text <-> object.property).addDisposableTo(disposeBag)

属性定义:var property = Variable<String?>(nil)

  1. 在 onNext 方法中一切正常并且 variable改变了它的值(value),但我的 object.property没有改变。
  2. 有什么方法可以在 <-> 方法内将变量当前值设置到 ControlProperty 中,因为我需要在订阅开始之前设置初始值?

最佳答案

在 Swift 4 中工作


String 和 Textfield 与 MVVM 架构的双向绑定(bind)示例:

  • 在 View Controller 中:

 @IBOutlet weak var emailTextfield: UITextField!
 var viewModel : CCRegisterViewModel?
  • 在 View 模型中:

var email = Variable<String>("")
  • 在 ViewController 中使用此代码

viewModel?.email.asObservable()
.bind(to: emailTextfield.rx.text)
.disposed(by: disposeBag)

emailTextfield.rx.text.orEmpty.bind(to:viewModel!.email)
.disposed(by: disposeBag)

关于ios - Rx swift : Two way binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323049/

相关文章:

ios - 使用网络技术在 iOS 应用程序内的浏览器中打开链接

ios - 我们如何以12小时格式获取日期

Swift + Alamofire - 验证并获取 XML 文件

c# - Gridview 中的 DataBind 用户控件

c# - 设置对象的 DataSource 属性时,何时使用 Type 与实例?

ios - 设置默认的 iOS 网络剪辑图标标题?

ios - 当发生一些特定操作时,如何禁用 View Controller 中的旋转?

ios - Auth.auth() 是什么类型

swift - 快速获取数据选择tableview变量

.net - 对 DataTrigger 条件的 Value 属性使用绑定(bind)