一. 设置tableViewCell的系统样式都知道tableView的创建有两种方式第一种是注册 第二种是非注册形式的 首先收一下tableView的样式:
UITableViewStylePlain和UITableViewStyleGrouped两种 至于两种tableView的样式大家可以自己来验证
下面来谈谈tableViewCell的系统样式
- 注册的cell样式: cell只有textLabel一个属性 而且textLabel在最左侧
-
非注册的形式
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reuse"];
}
(1). UITableViewCellStyleDefault
有属性 cell.imageView cell.textLabel 两个属性
imageView在最左侧 label在imageView旁边 如下图所示
(2). UITableViewCellStyleSubtitle
有属性 cell.imageView cell.textLabel detailTextLabel 三个属性
(3) UITableViewCellStyleValue1
有属性 cell.imageView cell.textLabel detailTextLabel 三个属性
(4) UITableViewCellStyleValue2
有属性 cell.textLabel detailTextLabel 两个属性
总结一下下 如果使用注册的方式创建tableView只有一个cell.textLabel一个属性 如果还需要其他的控件就需要自己取自定义cell
二.关于tableView设置的一些小细节
我们在创建tableView时候 常常会遇到各位各样影响UI效果的现象 比如tableViewCell之间的线 cell被选中时的状态...下面 我们就来总结一下这些小细节
- sectionHeaderHeight(sectionHeaderFooter) ------ 当tableView为UITableViewStyleGrouped时 设置分区头(尾)高度的属性
// 2. 设置分割线的样式
// self.tabelView.separatorStyle = UITableViewCellSeparatorStyleNone;
// 3. cell选中时的样式
// cell.selectionStyle
// 4. 在tableView非编辑状态下是否可以选中 默认为yes
// self.tabelView.allowsSelection
// 5. 是否可以选中多行 默认为NO
// self.tabelView.allowsMultipleSelection
// 6. 选中多行时是否可以编辑 默认为NO
// self.tabelView.allowsMultipleSelectionDuringEditing
// 7. tableView头视图
// self.tabelView.tableHeaderView
// 8. 进入编辑模式
// [self.tabelView setEditing:YES animated:YES];
// 9. 获取某个组的头标签的位置和大小
// [self.tabelView rectForHeaderInSection:<#(NSInteger)#>]
// 10. 获取某一行的位置和大小
// [self.tabelView rectForRowAtIndexPath:<#(nonnull NSIndexPath *)#>]
// 11. 通过cell路径找到cell
// cellForRowAtIndexPath
// 12. 当添加或者删除cell时更新 (endUpdates)
// beginUpdates
// 13. 插入一个或者多个组使用动画 插入一个或者多个行 使用动画 有插入同样有delete
// insertSections: withAnimation:
// self.tabelView insertRowsAtIndexPaths:<#(nonnull NSArray<NSIndexPath *> *)#> withRowAnimation:<#(UITableViewRowAnimation)#>
// 14. 更新cell或者section
// self.tabelView reloadRowsAtIndexPaths:<#(nonnull NSArray<NSIndexPath *> *)#> withRowAnimation:<#(UITableViewRowAnimation)#>
// self.tabelView reloadSections:<#(nonnull NSIndexSet *)#> withRowAnimation:<#(UITableViewRowAnimation)#>
// 15. 移动section或者cell
// self.tabelView moveRowAtIndexPath:<#(nonnull NSIndexPath *)#> toIndexPath:<#(nonnull NSIndexPath *)#>
// self.tabelView moveSection:<#(NSInteger)#> toSection:<#(NSInteger)#>
// 16. 返回选择的一个cell或多个路径
// indexPathsForSelectRow
// indexPathsForSelectRows
// 17. 设置选中某个区域的单元格
// selectRowAtIndex: animation: scrollPosition
// 18. 取消选中的单元格
// deselectRowAtIndexPath: animation:
// dequeueReusableCellWithIdentifier:---------获取重用队列里的单元格
// 二. UITableViewDataSource代理方法:
// 方法:
// 1. numberOfSectionsInTableView:------------设置表格的组数
// 2. tableView:numberOfRowInSection:----------设置每个组有多少行
// 3. tableView:cellForRowAtIndexPath:---------设置单元格显示的内容
// 4. tableView:titleForHeaderInSection:---------设置组表的头标签视图
// 5. tableView:titleForFooterInSection:-----------设置组表的尾标签视图
// 6. tableView:canEditRowAtIndexPath:---------设置单元格是否可以编辑
// 7. tableView:canMoveRowAtIndexPath:--------设置单元格是否可以移动
// 8. tableView:sectionIndexTitleForTableView:atIndex:-------设置指定组的表的头标签文本
// 9. tableView:commitEditingStyle:forRowAtIndexPath:----------编辑单元格(添加,删除)
// 10. tableView:moveRowAtIndexPath:toIndexPath-------单元格移动
// 三. UITableViewDelegate代理方法:
//
// 1. tableView: willDisplayCell: forRowAtIndexPath:-----------设置当前的单元格
//
// 2. tableView: heightForRowAtIndexPath:-----------设置每行的高度
// 3. tableView:tableView heightForHeaderInSection:-----------设置组表的头标签高度
// 4. tableView:tableView heightForFooterInSection:-------------设置组表的尾标签高度
// 5. tableView: viewForHeaderInSection:----------自定义组表的头标签视图
// 6. tableView: viewForFooterInSection: ----------自定义组表的尾标签视图
//
// 7. tableView: accessoryButtonTappedForRowWithIndexPath:-----------设置某个单元格上的右指向按钮的响应方法
//
// 8. tableView: willSelectRowAtIndexPath:-----------获取将要选择的单元格的路径
// 9. tableView: didSelectRowAtIndexPath:-----------获取选中的单元格的响应事件
// 10.tableView: tableView willDeselectRowAtIndexPath:------------获取将要未选中的单元格的路径
// 11. tableView: didDeselectRowAtIndexPath:-----------获取未选中的单元格响应事件
不吹牛逼 以上的这些关于tableView的方法如果都掌握了 那么 你就是下一个tableView小能手 是不是酷酷的 关于tableView的分享就到这里 ...
未完待续......