UITableView派生自UIScrollView
每个横向的表格称为Cell(UITableViewCell)
每个cell既可以存储数据,也可以接受选中的事件,我们可以选中某个cell时,下拉列表,也可以选中某个cell时,推出新的页面。在编辑模式下还可以选中多个cell,批量删除等。
UITableView的cell复用
UITableView只会添加所需的一定数量的cell,仅仅比同屏显示的cell多一点,当tableView滚动时,重复使用这些cell,刷新内容。
TableView是UI控件中相当重要的一个控件,所以我们分四个部分记录一下用法和相关代理方法
1.基本属性
2.分组模式
3.编辑模式
4.索引
5.显示顺序
6.分组开闭合
一基本属性
//UITableViewStylePlain:分组模式组头组尾会有一个悬浮效果。 Grouped:无分组,头尾部视图跟着滑动
UITableView *tableview = [[UITableView alloc]initWithFrame:CGRectMake(0,64, self.view.frame.size.width,self.view.frame.size.height-64) style:UITableViewStylePlain];
tableview.backgroundColor = [UIColor redColor];
tableview.delegate = self;
tableview.dataSource = self;
//属性设置
//分割线颜色
tableview.separatorColor = [UIColor redColor];
//分割线样式,设置为无
// tableview.separatorStyle = UITableViewCellSeparatorStyleNone;
//滚动条
tableview.showsVerticalScrollIndicator = NO;
tableview.showsHorizontalScrollIndicator = NO;
//设置tableview的滑动偏移量,人为设置让他滚动到具体位置
[tableview setContentOffset:CGPointMake(0, 100) animated:YES];
//tableview.sectionHeaderHeight//组头视图高度
//tableview.sectionFooterHeight//尾部视图高度
// tableview.tableFooterView 设置尾部视图
// tableview.tableHeaderView 设置头部视图
//tableview.backgroundView //只能写入
// tableview.editing 是否可以编辑
// tableview.allowsSelection 非编辑下,行是否可以选中,默认yes
//tableview.allowsMultipleSelection 是否可以选择多行
//tableview.sectionIndexColor 改变某行文本颜色
二.cell自适应高度
//自适应cell高度
tableview.estimatedRowHeight = 100;
tableview.rowHeight = UITableViewAutomaticDimension;
三.cell优化之提前注册法
//提前注册:参数二testcell为identifiera属性设置
[tableview registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:nil] forCellReuseIdentifier:@"testcell"];
NSString *cellid = @"testcell";设置标识符
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid forIndexPath:indexPath];
四.滚动到指定行
//默认选中姆一行
/*
UITableViewScrollPositionNone,默认在哪一行就在哪一行 不滑动
UITableViewScrollPositionTop,最上面
UITableViewScrollPositionMiddle 中间
UITableViewScrollPositionBottom 默认选中行显示在最下面
*/
NSIndexPath *selIndex = [NSIndexPath indexPathForRow:19 inSection:0];
[tableview selectRowAtIndexPath:selIndex animated:YES scrollPosition:UITableViewScrollPositionNone];
五.cell属性
//tableview.sectionHeaderHeight//组头视图高度
//tableview.sectionFooterHeight//尾部视图高度
// tableview.tableFooterView 设置尾部视图
// tableview.tableHeaderView 设置头部视图
//tableview.backgroundView //只能写入
// tableview.editing 是否可以编辑
// tableview.allowsSelection 非编辑下,行是否可以选中,默认yes
//tableview.allowsMultipleSelection 是否可以选择多行
//tableview.sectionIndexColor 改变某行文本颜色
//cell选中时的背景色
/*
UITableViewCellSelectionStyleBlue 蓝色
UITableViewCellSelectionStyleNone 无;
UITableViewCellSelectionStyleGray 灰色
UITableViewCellSelectionStyleDefault 默认
*/
cell.selectionStyle = UITableViewCellSelectionStyleGray;
六.解决分割线不顶格显示
//设置cell分割线的左边边距(系统默认时不左对齐的,有一点点间距)
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([cell respondsToSelector:@selector(setSeparatorInset:)])
{
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if([cell respondsToSelector:@selector(setLayoutMargins:)])
{
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}