1.如何利用tableView如何展示数据
设置数据源对象(一般是控制器)
self.tableView.dataSource = self;
数据源对象需要遵守协议->UITableViewDataSource
@interface ViewController ()@end
实现数据源协议里面的方法
/*** 告诉tableView⼀一共有多少组*/- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{}/*** 告诉tableView第section组有多少⾏行*/- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}/*** 告诉tableView每⼀一⾏行显⽰示的内容(tableView每⼀一⾏行都是UITableViewCell)*/- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath{}/*** 告诉tableView每⼀一组头部显⽰示的标题*/- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{}/*** 告诉tableView每⼀一组尾部显⽰示的标题*/- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{}
2.tableView常见的设置
// 设置tableView每⼀一⾏行cell的⾼高度,默认是44self.tableView.rowHeight = 80;// 设置tableView每⼀一组头部的⾼高度self.tableView.sectionHeaderHeight = 50;// 设置tableView每⼀一组尾部的⾼高度self.tableView.sectionFooterHeight = 50;// 设置分割线的颜⾊色,如果设置[UIColor clearColor]隐藏分割线self.tableView.separatorColor = [UIColor redColor];// 设置分割线的样式self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;// 设置表头self.tableView.tableHeaderView = [[UISwitch alloc] init] ;// 设置表尾self.tableView.tableFooterView = [UIButtonbuttonWithType:UIButtonTypeContactAdd];// 设置索引条上⽂文字颜⾊色self.tableView.sectionIndexColor = [UIColor redColor];// 设置索引条的背景颜⾊色self.tableView.sectionIndexBackgroundColor = [UIColor blackColor];
3.tableViewCell的常见设置
// 设置cell右边的指⽰示控件cell.accessoryView = [[UISwitch alloc] init];// 设置cell右边的指⽰示样式(accessoryView优先级 > accessoryType)cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;// 设置cell的背景view// backgroundView优先级 > backgroundColorUIView *bg = [[UIView alloc] init];bg.backgroundColor = [UIColor blueColor];cell.backgroundView = bg;// 设置cell的背景颜⾊色cell.backgroundColor = [UIColor redColor];// 设置cell选中的背景viewUIView *selectbg = [[UIView alloc] init];selectbg.backgroundColor = [UIColor purpleColor];cell.selectedBackgroundView = selectbg;// 设置cell选中的样式cell.selectionStyle = UITableViewCellSelectionStyleNone;
4.代理方法
/*** 当选中某⼀一⾏行cell就会调⽤用*/- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{}/*** 当取消选中某⼀一⾏行cell就会调⽤用*/- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{}/*** 返回每⼀一组显⽰示的头部控件**/- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{}/*** 返回每⼀一组显⽰示的尾部控件**/- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{}/*** 返回每⼀一组头部的⾼高度**/- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{}/*** 返回每⼀一组尾部的⾼高度**/- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{}/*** 返回tableView每⼀一⾏行的⾼高度*/- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{}
5.性能优化
传统的写法
/*** 每当有⼀一个cell进⼊入视野范围内就会调⽤用1次*/- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath{// 0.定义⼀一个重⽤用标识static NSString *ID = @"wine";// 1.⾸首先去缓存池中查找可循环利⽤用的cellUITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:ID];// 2.如果缓存池中没有,⾃自⼰己创建if (cell == nil) {cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];}//3. 设置数据cell.textLabel.text = [NSString stringWithFormat:@"%zd⾏行数据",indexPath.row];return cell;}
注册
- (void)viewDidLoad {[super viewDidLoad];// 根据ID 这个标识 注册对应的 cell类型[self.tableView registerClass:[UITableViewCell class]forCellReuseIdentifier:ID];}/*** 每当有⼀一个cell进⼊入视野范围内就会调⽤用1次*/- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath{// 1.⾸首先去缓存池中查找可循环利⽤用的cellUITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:ID];// 2.设置数据cell.textLabel.text = [NSString stringWithFormat:@"%zd⾏行数据",indexPath.row];return cell;}
6.索引条
/*** 返回每⼀一组的索引标题(数组中都是NSString对象)*/- (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView{}