UITableViewCell左滑删除、批量编辑
2016-06-24 本文已影响1021人
游某人
实现cell的左滑删除
- 只需要遵守tableView的代理,实现以下方法即可实现
//左滑编辑模式
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
//可在此对点击cell右边出现的按钮进行逻辑处理
}
//设置左滑删除按钮的文字
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置右边按钮的文字
return @"删除";
}
- 实现以下方法可代替以上两个方法,还能添加多个按钮,但只适配到iOS 8.0
- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewRowAction *action1 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"关注" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
NSLog(@"点击了关注");
tableView.editing = NO;
}];
UITableViewRowAction *action2 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
// NSLog(@"点击了删除");
[self.wineArray removeObjectAtIndex:indexPath.row];
NSIndexPath *newPath = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
[tableView deleteRowsAtIndexPaths:@[newPath] withRowAnimation:UITableViewRowAnimationFade];
}];
return @[action1,action2];
}
-
左滑出现两个按钮
Snip20160624_1.png -
实现批量处理
//先设置tableView的多选属性
//设置多选
self.tableView.allowsMultipleSelectionDuringEditing = YES;
//再在点击事件中实现逻辑
- (IBAction)editingModel {
[self.tableView setEditing:!self.tableView.editing animated:YES];
}
-
如图
Snip20160624_2.png -
还有自定义cell批量删除以后有机会再讲