一、我们刚才说到这个地方,我们说,用系统的单元格,是不是不够用吧, 1.那么这个时候,我们就要、需要自定义单元格 自定义单元格,我们就新建一个类,继承自UITableViewCell 来,写一下, 那么,这个时候,应该在哪个文件夹下,去新建类啊, 是不是在Views下面吧, 因为我们这是一个单元格类型嘛, 右键、New File, 继承自UITableViewCell 这个,叫什么Cell, 是不是一个叫Message,一个消息吧, 好,那么这个MessageCell呢,继承自我们的UITableViewCell, 然后,因为我们刚才,创建这个Cell的时候,是不是通过调这个initWithStyle来创建的吧, 所以说,我们这里要重写这个initWithStyle方法, 重写initWithStyle方法 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ //statement; } 在这个方法中,首先,是要干什么, if(self = [super initWithStyle:…… 吧, 让它super的initWithStyle 然后,把你这style传过来,把reuseIdentifier传过来 那么,如果调用父类的初始化方法,没有问题, 赋值以后,接下来,在里面,是不是要创建子控件吧, //创建子控件 然后,都创建完毕以后,把当前这个self,返回, self,给它返回, 3.好,在这个地方,就要创建子控件 //创建子控件 我们看一下这个程序里面,每一个单元格,子控件是不是就是三个, 1)一个是用来显示时间的一个Label 2)一个是用来显示头像的一个imageView,图片框 3)一个是用来显示正文的一个按钮, 注意,这是个按钮,这个不是Label, 等会儿,我再告诉大家,这个为什么是个按钮,不是Label, 为了给它设置这个背景图,所以这个时候,用的是按钮,不是Label, 也就是说,一个Label,一个图片框,一个按钮, 三个,那么接下来,我们就一起把这三个来给大家创建一下, 创建一下这三个子控件, //显示时间的Label //显示头像的UIImageView //显示正文的按钮 好,创建这三个子控件,来吧, 这个非常简单,一个一个来写 1)显示时间的Label UILabel *lblTime = [[UILabel alloc] init]; //还是创建的时候,什么都别想,直接创建出来就OK了, //别管它的数据,frame什么东西,什么都别想 //然后呢,创建完毕以后,是不是要把它加到当前这个单元格里面, //self,是不是就是当前单元格,我们说,子控件都要给它加到self.contentView里面吧,addSubview: //addSubview吧,然后呢,来个lblTime [self.contentView addSubview:lblTime]; //这样是不是就把当前这个时间Label加进来了, 2)显示头像的UIImageView //是一个图片框 UIImageView *imgViewIcon = [[UIImageView alloc] init]; [self.contentView addSubview:imgViewIcon]; 3)显示正文的按钮 UIButton *btnText = [[UIButton alloc] init]; [self.contentView addSubview:btnText]; 通过这三部分,是不是就向这个单元格里面创建了三个子控件啊, 然后,那么到此为止,这里这个子控件,就创建好了, 也就是说,我们在这里用的时候,在控制器里面用的时候,这个时候,是不是就不要再写这个UITableViewCell了, 不要再写这个系统单元格了吧, 变成什么单元格,CZMessageCell吧, 变成我们自定义的CZMessageCell吧, 既然要使用自定义的CZMessageCell,所以说,这里怎么样,导入头文件吧, 导入头文件,import “CZMessageCell.h“ 导入这个头文件&