//设置一下导航栏的编辑按钮
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];