//当点击cell时
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"%@",self.dataList[indexPath.section][indexPath.row]);
}
========================================
//设置编辑状态 有删除和插入二种
首先设置进入编辑状态
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}
b.在代理方法中实现所需要的功能
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row % 2) {
return UITableViewCellEditingStyleDelete;
}else{
return UITableViewCellEditingStyleInsert;
}
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//删除数据源
[self.dataList[indexPath.section] removeObjectAtIndex:indexPath.row];
//更新tableview
// [self.tableView reloadData]; 这里没必要整个刷新
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}else if(editingStyle == UITableViewCellEditingStyleInsert){
[self.dataList[indexPath.section] insertObject:@"insert" atIndex:indexPath.row + 1];
NSIndexPath *insertIndexPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];
[self.tableView insertRowsAtIndexPaths:@[insertIndexPath] withRowAnimation:UITableViewRowAnimationTop];
}
}
//修改向左划出delete的文字
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"删除";
}
======================================
//移动 在编辑状态才可以进行
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
//保存原数据
NSString *preData = self.dataList[sourceIndexPath.section][sourceIndexPath.row];
//删除原数据
[self.dataList[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];
//添加到目标位置 完成移动
[self.dataList[destinationIndexPath.section] insertObject:preData atIndex:destinationIndexPath.row];
//移动cell
[self.tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
NSLog(@"success");
}
=======================================
//-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
// return @"我是头";//自动设置高度为44
//}
-(NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
return @"我是尾";//自动设置高度为44
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 88;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
static NSString *headerId = @"headerId";
UITableViewHeaderFooterView *headerV = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headerId];
//和cell一样 也是复用机制
if (!headerV) {
headerV = [[UITableViewHeaderFooterView alloc]init];
}
//cell和HeaderFooterView 一样,一般自定义 很少用系统的,系统封装的有点乱,而且不是很美观,平时用得少,这里有梳理得还是很乱tintColor,textLabel,detailTextLabel,contentView
// cell不一样的地方
// cell.selectionStyle 被选中的风格
// editingStyle; 编辑的风格
// accessoryType; 右边的风格 常见的有打勾这样的
headerV.textLabel.text = [NSString stringWithFormat:@"%ld",section];
headerV.contentView.backgroundColor = [UIColor orangeColor];
return headerV;
}
===================================
//设置索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
// UITableViewIndexSearch是放大镜样子的
return @[UITableViewIndexSearch, @"0",@"1", @"2"];
}
//设置索引号
-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
// 当值时-1时不操作
return index - 1;
}
=======================================
//8.0的新代理方法,设置左划cell时出现多个按钮(例如删除、置顶),实现了这个代理,自带的删除就没有了
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 用来设置滑动时显示的更多的按钮
UITableViewRowAction *action1 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
//这里面实现点击后的操作
NSLog(@"置顶");
}];
// 修改背景色
action1.backgroundColor = [UIColor blueColor];
UITableViewRowAction *action2 =[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"清除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
//这里面实现点击后的操作
NSLog(@"清除");
}];
UITableViewRowAction *action3 =[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"更多" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
//这里面实现点击后的操作
NSLog(@"更多");
}];
return @[action1, action2, action3];
}
结果展示