M-V-VM在iOS开发中的应用
博客专区 > 泊竹 的博客 > 博客详情
M-V-VM在iOS开发中的应用
泊竹 发表于3年前
M-V-VM在iOS开发中的应用
  • 发表于 3年前
  • 阅读 583
  • 收藏 7
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 本文尝试给复杂ViewController减肥

        项目开发中,经常遇到一个界面很复杂,各种控件各种View,相互之间有复杂的互动逻辑,各组件的数据有时还需要专门的服务器接口支持

       MVC模式会把这些逻辑都放到C里面实现,使得某个ViewController非常庞大复杂。不管是改动功能还是debug,都很费时。

       M-V-VM模式引入MVC中,可以改善这种情况。结构如下:

解释

       将一个界面中的各种元素分成几个相对独立的组件,每个组件创建一个对应的ViewModelViewController创建并管理这些ViewModel之间的相互通讯互动

       ViewModel管理View的刷新和用户操作事件。如果用户的响应需要其他组件进行互动,则通过delegate向上传递给ViewController。由ViewController进行ViewModel之间的通讯路由

       View提供一个用户刷新显示的API,内部元素的具体刷新实现外部不可见。

除了刷新显示,View还提供用户操作的响应,通过delegate通知ViewModel处理。

       DataModelViewModel管理。它具有获取View的数据、保存数据到某个数据结构的功能。一般会创建一个公共属性保存获取到的新数据。ViewModel对这个属性建立KVO监控。

       我们一般会使用异步方式从网络下载新数据,当新数据下载成功,经过解析后存储到公共属性里。这时,KVO方法被激活执行,ViewModel读取属性的值传递给View,让它刷新显示

       DataModel提供一个类似reloadData的更新数据方法,由ViewModel调用。ViewModel只要调用了这个方法,一切就开始自动运行

       DataModel仅对ViewModel可见。这样,这三者形成了一个相对独立的生态圈,外部仅能看见ViewModel。由ViewModel提供对外的API,比如刷新数据,提交跨ViewModel通讯申请等

Demo项目在这里下载地址

标签: IOS MVVM
共有 人打赏支持
粉丝 91
博文 67
码字总数 13285
×
泊竹
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: