TableView的编辑

//设置一下导航栏的编辑按钮

self.navigationItem.rightBarButtonItem = self.editButtonItem;

//重写一下系统提供的编辑按钮的点击方法

-(void)setEditing:(BOOL)editing animated:(BOOL)animated{

    [super setEditing:editing animated:animated];
    [self.tableView setEditing:editing animated:animated];

}

//开启一下tableView的编辑模式

self.tableView setEditing:YES animated:YES];
//(与设置,重写 方法 二选一就行)

//一些方法

#pragma mark 逐行的去设置,哪些行编辑,哪些行不编辑
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{

    return YES;
}
#pragma mark 设置编辑模式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

    //返回的是多选状态
//    return UITableViewCellEditingStyleInsert |UITableViewCellEditingStyleDelete;

    return UITableViewCellEditingStyleDelete;
}
#pragma mark 设置删除按钮的标题
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"来点我啊";

}
#pragma mark 实现这个方法,实现左划效果,而且是对应按钮功能的方法
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    //先判断当前的编辑模式
    if(editingStyle == UITableViewCellEditingStyleDelete){
    //先把数组里的对象删除掉
        [self.studentArr removeObjectAtIndex:indexPath.row];
        //第一种方式
//        [self.tableView reloadData];
        //第二种方式
        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }

}
#pragma mark 移动
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{

    //它只是视觉上移动,并没有改变数据的顺序,所以想要改变数组的顺序,需要用代码来实现
    //获取要移动的数据
    Student *stu = [self.studentArr[sourceIndexPath.row] retain];
    //在数组里把这个对象移除
    [self.studentArr removeObjectAtIndex:sourceIndexPath.row];
    [self.studentArr insertObject:stu atIndex:destinationIndexPath.row];

    [stu release];

}
//自定义编辑按钮
- (nullable NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewRowAction *actionFirst = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"通话" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {

        NSLog(@"123");
    }];
    actionFirst.backgroundColor = [UIColor redColor];
    UITableViewRowAction *actionSecond = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"不要" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {

    }];
    actionSecond.backgroundColor = [UIColor greenColor];
    return @[actionFirst,actionSecond];

}
//单行刷新
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

你可能感兴趣的:(TableView的编辑)