-、表视图的编辑状态
1、表视图的编辑状态有两种
insert和delete
2、实现表视图编辑的步骤
1)让tableview处于编辑状态
self.tableView.editing
2)通过代理方法确定tableView处于哪种状态(添加还是删除)
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
3)选择添加或者删除通过代理方法来做不同的处理
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
二、单元格的移动
只需实现两个代理方法
1、实现代理方法,让tableView的单元格支持移动,如果该方法返回为NO,则不支持单元格的移动,该方法一般可省略
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
2、实现代理方法,指定从哪里移到哪里
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
cell折叠的核心逻辑
/*
* cell折叠的核心逻辑
* 让选中那一段里面cell的行高都为0
* 步骤:
1、让UIButton事件带参数
2、获取到点击的到底是哪一段
3、重新设置点击段的行高
*/
tableView右侧索引 tableView给我们提供了代理方法来实现右侧的索引试图
具体实现步骤
1、指定右侧索引显示的内容,
- (NSArray<NSString *> *)sectionIndexTitlesForTableView: (UITableView *)tableView
2、每次点击默认都将选中的那一段给移动到最顶部,如果想要自定义位置,则实现如下代理方法
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
PS:
设置索引的字体颜色
mytableView.sectionIndexColor
设置索引的背景颜色
mytableView.sectionIndexBackgroundColor
*/
三、单元格的重用机制
试想如果这个表试图有几十个几百行数据的话,如果我们每次都创建一个cell将会创建太多的对象,这样会使你的软件容易卡顿,如果这个cell上面在放有高清图片的话更不可想象。
1)当表试图显示时,首先会创建几个cell显示在界面上
2)当一个cell被移出表视图时,这个cell对象并不会被释放,而是被放到一个缓存池中
3)当一个cell将要显示时,我们先要在缓存池中查看缓存池中是否有cell,如果有的话,将这个cell对象取出来复用,如果没有再重新创建