一.界面搭建
1.确定开发模式
如果界面是固定的,可以用xib
界面的一些内容不固定,就用纯代码
cell用什么方式去开发(我们采用纯代码和xib结合的方式)
2.划分层次结构
2.1 怎么划分?
按照功能划分
按照隐藏效果:在某些条件下,一些控件要一起隐藏,就可以放在同一模块中(前提是这些控件集中在一起)
2.2 分析界面发现cell的middleView和commentView不确定要不要显示
所以,cell采用纯代码方法搭建
3.自定义cell
3.1在创建cell的时候,就把所有可能显示的模块全部添加到cell上
把所有可能出现的模块(控件)全部添加到cell里面,然后根据需求再决定某些模块(控件)是显示还是隐藏
3.2根据服务器数据,决定某些模块是否隐藏
3.3在哪里创建cell?
采用注册的方法,底层会自动调用initWithStyle方法来创建cell
4.一个模块一个模块去搭建
4.1把cell分解为四个模块,如上图
4.2先把一个模块所有的内容(搭建界面)和业务逻辑处理完,在去处理下一个模块
4.3模块的处理方式:先搭建界面,再处理界面业务逻辑
4.4优点:业务逻辑清晰,不容易混淆
二.topView模块开发
1.xib搭建界面
1.1分析界面有哪些控件来搭建
1.2自定义uiview并创建xib,描述好界面后,把界面添加到cell里面
2.请求数据
2.1 查看接口文档,使用afn发送网络请求
2.2网络请求成功时,把数据转换成模型
2.3在模型中定义属性(先自定义模型)
查看界面需要使用哪些数据,就找到定义数据的属性定义到模型中
2.3自定义视图模型,视图模型包含模型(就是在视图模型中定义一个模型的属性)
2.4遍历模型,全部转换为视图模型
创建视图模型对象
用视图模型的模型属性来接收模型
把视图模型保存到数组中
3.在视图模型中计算cell子控件的frame和高度
3.1什么时候计算的
在模型转视图模型的时候计算的
3.2在哪里计算的?
重写视图模型的模型属性的set方法,在方法里面计算cell的frame和高度,并定义属性保存起来
因为,在模型转视图模型的时候,会把模型传给视图模型的模型属性,底层会触发视图模型的模型属性set方法,这个时候就去计算了
3.3 cell的高度计算
cell的高度就是Y轴方向最后一个控件的最大Y值
4.展示数据
4.1怎么展示?
在自定义cell里面定义视图模型属性