一、表视图的介绍
1、表视图和其他视图一样,它是iOS中最重要的试图,很多应用程序都会使用到,表只是一个容器,要想显示内容,必须提供信息。
2、表试图里面可以放很多行信息,使用表视图可以显示一个单元格列表,每个单元格列表都包含大量的信息,但仍然是一个整体。并且可以将表视图划分为多个区(section),以遍从视觉上将信息分组。表视图控制器是一种只能显示表视图的标准视图控制器,可以在表视图占据整个视图时使用这种控制器。
3、表视图的两种风格(或者说外观)
1)普通风格(或者叫无格式,它不像分组表那样在视觉上将各个区分开,但通常带可触摸的索引(类似于通讯录),有时又称他们为索引表)
UITableViewStylePlain(段里面较多数据可以保持段头保持不动)
2)分组风格(分组)
UITableViewStyleGrouped
3)UITableViewStylePlain和UITableViewStyleGrouped。这两者操作起来其实并没有本质区别,只是后者按分组样式显示前者按照普通样式显示而已。
二、表视图的基本结构
1、表视图有表头、表尾、中间一连串单元格试图组成 (表头,设置单元格视图,表尾)
1)设置表头 tableHeaderView (其实就是建一个label)
例如 :给tableView设置表头
UILabel *headerLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 60)];
headerLable.textAlignment = NSTextAlignmentCenter;//表头设置在中间
headerLable.text = @"五期联系人";
headerLable.backgroundColor = [UIColor cyanColor];
tableView.tableHeaderView = headerLable;
2)设置单元格试图(每个单元格都有独特的标示符,也成为重标示符,(reuse)用于在编译时引用单元格;配置表视图时,必须使用这些标示符)
UITableViewCell,单元格也可以分段显示,每一段都可以通过代理设置段头和段尾
3)设置表尾 tableFooterView
例如:给tableView设置表尾
UILabel *footterLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 60)];
footterLable.textAlignment = NSTextAlignmentCenter;
footterLable.text = @"未来由我创,爱拼才会赢.";
footterLable.backgroundColor = [UIColor clearColor];
tableView.tableFooterView = footterLable;
- tableView的常用属性和方法(每个属性都有举例)如果是建立的UITabelView 表达时用 它的对象加 属性名字,如果是基于UITableViewController,则运用属性直接用self.加属性名字
1. 设置表视图分割线风格
@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;
例如:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
self.tableView.separatorColor = [UIColor cyanColor];
2. 设置表视图分割线颜色,默认标准灰色
@property(nonatomic,retain) UIColor *separatorColor;
例如:tableView.separatorColor = [UIColor redColor];
3.设置表视图的头部视图
@property(nonatomic,retain) UIView *tableHeaderView;
例如:给tableView设置表头
UILabel *headerLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 100)];
headerLabel.textAlignment = NSTextAlignmentCenter;
headerLabel.text = @"宁做鸡头不做凤尾";
headerLabel.textColor = [UIColor whiteColor];
headerLabel.backgroundColor = [UIColor clearColor];
tableView.tableHeaderView = headerLabel;
4. 设置表视图的尾部视图
@property(nonatomic,retain) UIView *tableFooterView;
例如: 给tableView设置表尾
UILabel *footerLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 100)];
footerLabel.textAlignment = NSTextAlignmentCenter;
footerLabel.text = @"爱咋咋地";
footerLabel.textColor = [UIColor whiteColor];
footerLabel.backgroundColor = [UIColor clearColor];
tableView.tableFooterView = footerLabel;
5.设置表视图单元格的行高
@property(nonatomic) CGFloat rowHeight;
例如:
tableView.rowHeight = 100;
6.设置表视图背景
@property(nonatomic, readwrite, retain) UIView *backgroundView
例如:
tableView.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"apple.jpg"]];//后面是图片名字
7.刷新表视图单元格中数据
- (void)reloadData;
8.显示指示条
showsVerticalScrollIndicator
9 设置表视图section头部行高
@property(nonatomic) CGFloat sectionHeaderHeight;
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 40;
}
10. 设置表视图section尾部部行高
@property(nonatomic) CGFloat sectionFooterHeight
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 40;
}
三、单元格的显示
1、单元格的位置表示
NSIndexPath:能表示当前cell是tableView的第几段第几行
2、单元格的创建(必须有一个标识符)
UITableViewCell * cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
cell的样式
1)UITableViewCellStyleDefault
左侧显示textLabel,imageView显示在最左边
2)UITableViewCellStyleValue1
左侧显示textLabel、右侧显示detailTextLabel,imageView显示在最左边
3)UITableViewCellStyleValue2
左侧依次显示textLabel(默认蓝色)和detailTextLabel,imageView可选
4)UITableViewCellStyleSubtitle
左上方显示textLabel,左下方显示detailTextLabel,imageView显示在最左边
cell的辅助图标 accessoryType (accessory |əkˈsesəri| 辅助,附加的)
1) 不显示任何图标
UITableViewCellAccessoryNone,
2) 跳转指示图标
UITableViewCellAccessoryDisclosureIndicator
3) 内容详情图标和跳转指示图标
UITableViewCellAccessoryDetailDisclosureButton
4) 勾选图标
UITableViewCellAccessoryCheckmark
5) 内容详情图标
UITableViewCellAccessoryDetailButton
5) 自定义辅助图标
accessoryView属性
3、cell的常用属性
1)设置cell的背景试图
backgroundView
2)设置选中的cellbei的背景图片
selectedBackgroundView
cell.selectedBackgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"tableCell"]];
3) 设置选中时的样式
selectionStyle
4.UItableView表中的每一行都由一个UItableViewCell表示可以用一个图像,一些文本,一个可选择的辅助图标来配置每个UItableViewCell对象,UItableViewCell为每个cell定义了如下的所示的属性
1). textLable:Cell的主文本标签(一个UILable的对象)
2). detailTextLable :cell的二级文本标签,当需要添加额外细节时(一个UILable对象)
3) . imageView :一个用来装载图片的图片视图
5.UItableView 必须实现的3个核心方法(段数,行,建立一个cell)
1).段的数量,返回表视图划分多少个分区(这个方法可以分段显示或者单个列表显示我们的数据)不写代表一行
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
2).设置某段行的数量 //返回给定分区有多少行,分区编号从0开始(不同的分段返回不同的行数可以用switch来做,如果是单个列表,就返回单个想要的函数即可)
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
3).- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath//返回一个经过正确配置的单元格对象,用于显示在表视图的指定位置(通过我们索引的路径section和row来确定)
四、代理方法(UITableViewDelegate)
1、一般是处理表视图基本样式(单元格高度)以及捕捉选中单元格事件
2、常用代理方法(下面的返回值都是数字)
1)配置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
2)设置section 头部、尾部视图的高度(段头,段尾)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
3)自定义section头部、尾部视图,注意:需要指定高度
1.- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
例如:
//自定义段头
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 50)];
NSString *title = dataArray[section][@"title"];
label.text = title;
label.backgroundColor = [UIColor redColor];
label.textAlignment = NSTextAlignmentCenter;//把自定义的段头段位放到中间
return label;
}
//自定义段尾
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 50)];
NSString *title = dataArray[section][@"trail"];
label.text = title;
label.backgroundColor = [UIColor redColor];
label.textAlignment = NSTextAlignmentCenter;
return label;
}
4)用户单击单元格中辅助按钮时,调用该方法
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
5)用户单击单元格,调用该方法(五六很像,大家要区分开)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
6)取消选中单元格时,调用该方法
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0);
7)设置单元格编辑样式
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;
8).创建lable时带的一些属性
//给label指定内容
cell.textLabel.text = self.dataArray[indexPath.row];
//给label的内容设置字体和大小
cell.textLabel.font = [UIFont fontWithName:self.dataArray[indexPath.row] size:20];
cell.textLabel.textColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor clearColor];
9).懒加载
当用到某一个对象的时候,才创建这个对象
- (NSArray *)dataArray
{
if (_dataArray == nil) {
_dataArray = [NSArray array];
}
return _dataArray;
}