tableView展示数据的过程
// 调用数据源的下面方法得知一共有多少组数据
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
// 调用数据源的下面方法得知每一组有多少行数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
// 调用数据源的下面方法得知每一行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
Cell简介
UITableView的每一行都是一个UITableViewCell,通过dataSource的tableView:cellForRowAtIndexPath:方法来初始化每一行
UITableViewCell内部有个默认的子视图:contentView,contentView是UITableViewCell所显示内容的父视图,可显示一些辅助指示视图
辅助指示视图的作用是显示一个表示动作的图标,可以通过设置UITableViewCell的accessoryType来显示,默认是UITableViewCellAccessoryNone(不显示辅助指示视图),其他值如下:
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryCheckmark
还可以通过cell的accessoryView属性来自定义辅助指示视图(比如往右边放一个开关)
通过代码自定义cell(cell的高度不一致)
1. 新建一个继承自UITableViewCell的类;
2. 重写initWithStyle:reuseIdentifier:方法:
添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中);
进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片);
3.提供2个模型:
数据模型: 存放文字数据\图片数据;
frame模型: 存放数据模型\所有子控件的frame\cell的高度;
4.cell拥有一个frame模型(不要直接拥有数据模型);
5.重写frame模型属性的setter方法: 在这个方法中设置子控件的显示数据和frame;
6.frame模型数据的初始化已经采取懒加载的方式(每一个cell对应的frame模型数据只加载一次)。