浅谈自定义cell的心得

作为一名iOS程序员我们知道tableView是一个重头戏,可谓是猖狂至极,就像一个app里没有用到tableView就不是一个合格的程序员,很显然tableView自带的cell肯定满足不了我们的需求,那么自定义cell便是家常便饭了!就此,谈谈自定义cell的一些看法和自己总结的一些技巧,和大家分享分享!
我们在平时中肯定遇到过以下这两种自定义cell的情况:
首先,我们先简要分析以下,第一种情况的cell,UI都是一样的(包括frame固定、子控件一样、子控件的摆放也一样等)只是数据类型不一样,第二种情况首先每个cell的高度就不一定,接着子控件的frame也不一定一样。
第一种情况如下图:
这里写图片描述
针对这种情况我的一般做法:
- 新建一个xib文件描述cell的内部结构(看看cell内部都有那些子控件,搭建一个一样的UI界面)
- 新建一个自定的类(自定义的类继承的对象要取决于xib根view)
- 新建类的类名最好和xib的名字保持一致,以便方便识别
- 提供一个类方法返回一个创建好的自定的cell(将xib的加载封装起来)
- 给xib对应的类提供一个模型属性让外界传递模型数据,进行数据的加载
- 紧接着要重写该模型属性的setter方法,在这里将模型数据展示到对应的子控件上

第二种情况如下:
这里写图片描述
针对这种情况我的做法通常如下(纯代码的方式):
1.新建一个继承自UITableViewCell的类
2.重写initWithStyle:reuseIdentifier:方法
- 添加所有需要显示的子控件(在这里不要设置子控件的数据和frame,子控件要添加到contentView中)
- 设置子控件一次性的属性设置(有些属性只需要设置一次,不必随着数据的改变而改变,比如字体\固定的图片)
3.提供两个模型
- 数据模型:存放文字数据/图片等
- frame模型:存放模型数据、所有子控件的frame、每个cell的高度
4.让自定义的每个cell拥有一个frame模型(因frame模型中有模型数据,所以不必要直接拥有模型数据了)
5.重写frame模型属性的setter方法:在这方法中设置子控件的显示数据和frame
6.针对frame模型数据的初始化采取懒加载的方式(在将数据转化为模型数据后,紧接着将模型数据赋予frame模型,设置子控件的显示数据和frame,一个cell对应一个frame模型)

此处是否有掌声啊!!亲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值