项目总结之tableView的小细节
一. 设置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旁边 如下图所示
3A486217-6BE5-4F88-8392-4333B62766C7.png
(2). UITableViewCellStyleSubtitle
有属性 cell.imageView cell.textLabel detailTextLabel 三个属性
D43043F3-75FF-4914-A667-13A14BE672B4.png
(3) UITableViewCellStyleValue1
有属性 cell.imageView cell.textLabel detailTextLabel 三个属性
0B580F7C-0D8B-4BDA-B5FA-CB08679F4432.png
(4) UITableViewCellStyleValue2
有属性 cell.textLabel detailTextLabel 两个属性
2D425E3C-8C4C-4517-AE48-C2D0DB297399.png
总结一下下 如果使用注册的方式创建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的分享就到这里 ...
未完待续......