iOS-ReactiveCocoa(RAC)的高级使用之视图与模型的双向绑定

  1. 在传统的MVC模型中,控制器负责模型与视图交互,只能单向的,模型到视图,模型的改变,影响着视图的改变。
  2. 但是无法实现视图内容的改变影响模型数据的改变。
  3. 通过RAC实现视图与模型的双向绑定,意思是当模型发生改变时,视图数据发生变化,与此同时,当视图数据发生改变时,模型的数据也跟着改变。

iOS中目前只能通过RAC来完成双向绑定

这里通过具体代码来实现双向绑定

  • 自定义一个模型Person,有name、age、height三个属性

  • 自定义一个视图,包含nameField、ageField、heightField三个输入框

  • 需求:完成视图中三个输入框内部的内容显示为Person类对应属性的值,当Person类内容改变时,对应输入框的内部内容也改变;如果输入框的内部内容发生改变,Person实例的属性也改变。

模型 –> UI 的绑定(模型发生改变,UI跟着改变)
    // 字符串的绑定
    RAC(_nameField,text) = RACObserve(p, name);
    // 基本数据类型的绑定
    RAC(_ageField,text) = [RACObserve(p, age) map:^id _Nullable(id  _Nullable value) {
        return [value description];
    }];
    RAC(_heightField,text) = [RACObserve(p, height) map:^id _Nullable(id  _Nullable value) {
        return [value description];
    }];

UI –> 模型的绑定(UI发生改变,模型跟着改变)
    [[RACSignal combineLatest:@[_nameField.rac_textSignal,_ageField.rac_textSignal,_heightField.rac_textSignal]] subscribeNext:^(RACTuple *x) {
        p.name = x.first;
        p.age = [x.second integerValue];
        p.height = [x.third doubleValue];
    }];

最后:当修改模型数据后,不需要赋值,UI即可显示模型对应的数据
当修改UI界面中输入框内部的内容时,模型的数据也跟着改变了,可以通过打印看出结果。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值