iOS-ReactiveCocoa(RAC)的高级使用之视图与模型的双向绑定
在传统的MVC模型中,控制器负责模型与视图交互,只能单向的,模型到视图,模型的改变,影响着视图的改变。
但是无法实现视图内容的改变影响模型数据的改变。
通过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界面中输入框内部的内容时,模型的数据也跟着改变了,可以通过打印看出结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端