iOS开发之自定义UITableView的cell

时间:2021-09-19 22:29:22

系统默认的UITableViewCell的每行都有横线(分隔符),就算没有数据也是如此,有时候我们想只在有数据的地方有下划线,可以去除下划线,然后在awarkFromNid方法中使用addsubview的方法加入下划线到UITableViewCell的contentView中。但有些时候我们还要自定义其他类型的Cell。

自定义cell有两种方法,一种是通过xid自定义控件,一种是通过代码自定义cell。

通过xid自定义cell的步骤:

  1. 新建一个xib文件描述一个view的内部结构(假设叫做MJTgCell.xib)
  2. 新建一个自定义的类

(自定义类需要继承自系统自带的view, 继承自哪个类,  取决于xib根对象的Class)

  1. 新建类的类名最好跟xib的文件名保持一致(比如类名就叫做MJTgCell)
  2. 将xib中的控件和自定义类的.m文件进行连线
  3. 提供一个类方法返回一个创建好的自定义view(屏蔽从xib加载的过程)
  4. 提供一个模型属性让外界传递模型数据
  5. 重写模型属性的setter方法,在这里将模型数据展示到对应的子控件上面

通过代码自定义cell步骤:

1.新建一个继承自UITableViewCell的类

2.重写- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier

:(NSString *)reuseIdentifier方法:

  • Ø 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中)
  • Ø 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片)

3.提供2个模型

  • Ø 数据模型: 存放文字数据\图片数据
  • Ø frame模型: 存放数据模型\所有子控件的frame\cell的高度

4.cell拥有一个frame模型(不要直接拥有数据模型)

5.重写frame模型属性的setter方法: 在这个方法中设置子控件的显示数据和frame

6.frame模型数据的初始化已经采取懒加载的方式(每一个cell对应的frame模型数据只加载一次)