美文网首页iOS开发技术分享程序员iOS学习开发
项目实例解析MVC模式下的UITableView

项目实例解析MVC模式下的UITableView

作者: 真的真心瓜子 | 来源:发表于2017-10-24 23:04 被阅读238次

    简介

    重构项目的时候遇到一个比较有逻辑性的界面,重构前该界面是把所有的代码全堆在在了控制器,不封装,不模块化,一共有两千多行,重构后在控制器的代码量减少了4倍,整体看上去逻辑更加清晰了些,在这个1024的日子写一写~

    先附上斯坦福教授的经典图片:

    先看界面

    提示:有5种身份:1、红队队长  2、红队队员 3、蓝队队长  4、蓝队队员  5、游客(尚未参加该场比赛的用户),图1 是红队队长身份对应的UI。

    红队队长:修改红队队名、修改蓝队队名、邀请蓝队队长、邀请红队队员、生成费用分摊表、填写赛果、撤销比赛、分享赛果

    蓝队队长:修改蓝队队名、邀请蓝队队员、退出比赛、生成费用分摊表、分享赛果

    红队队员/蓝队队员:邀请红队/蓝队队友、退出比赛、查看费用分摊表、分享赛果

    游客:参加比赛

    总言之,就是整个界面会根据不同账户的身份动态显示不同的UI,不同的功能。

    重构后的思路

    解析

    1、model负责解析数据:将从云端得到的json解析成model,可以自己解析数据也可以使用YYModel,这里看自己的喜好。

    采用枚举的方式定义用户身份,

    2、身份判断:接下去所有的业务逻辑全都基于该model,controller将得到的model并根据model的属性判断当前用户的身份(红队队长、蓝队队长、红队队员、蓝队队员、游客)。然后根据不同的身份处理不同的业务逻辑。

    3、创建固定的UI:采用UITableView的方式,将四个模块分为四个组,前三个组为一行,第四组留言则根据model的留言数量reture相应的row,分组的原因是留言那个模块是动态改变并且每个留言的UI都一样,可以出列相同的cell复用,减少工作量和bug的产生率。

    4、根据传入cell的model动态更改UI:在cell中重写set的方法刷新数据和控件的frame。

    5、controller处理响应事件:在view的触发事件则通过delegate或者block回调给controller处理。

    最后文件大致这样:

    在controller中:处理业务逻辑

    在model中:数据转换

    在view中:初始化UI并刷新UI数据

    总言之,就是针对需求选择最合适的控件构建UI,采用对应的设计模型进行解耦、数据传输展示。

    参考视频:网易公开课斯坦福大学教授讲解MVC的模式:https://v.youku.com/v_show/id_XNTI4Mzc5NDQw.html

    如有讲的不足的地方,敬请谅解并加以指正,谢谢~  QQ:1002282311

    相关文章

      网友评论

      本文标题:项目实例解析MVC模式下的UITableView

      本文链接:https://www.haomeiwen.com/subject/cnoxpxtx.html