返回

iOS系统左滑删除的详细教程

IOS

前言

整理一下UITableViewcell左滑删除的注意点,实现一个简单的左滑删除功能。整理的过程也是一个回归的过程,有时候一些功能很久没写就忘记了系统的实现方法。iOS 11之前的editActionsForRowAtIndexPath:方法可以用自定义滑动编辑按钮进行左滑删除的操作,iOS 11之后的方法不再支持自定义按钮。

iOS 11 之前

iOS 11 之前,需要先设置tableViewediting属性为YES,然后实现UITableViewDelegate代理方法editActionsForRowAtIndexPath:,在该方法中自定义滑动按钮,最后在代理方法tableView:commitEditingStyle:中处理左滑删除逻辑。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleDelete;
}

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        // 删除逻辑
    }];
    return @[deleteAction];
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // 删除逻辑
    }
}

iOS 11 之后

iOS 11 之后,不再支持自定义滑动编辑按钮,需要实现tableView:trailingSwipeActionsConfigurationForRowAtIndexPath:代理方法来处理左滑删除操作。

- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
    UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"删除" handler:^(UIContextualAction *action, __kindof UIView *sourceView, void (^completionHandler)(BOOL)) {
        // 删除逻辑
        completionHandler(YES);
    }];
    UISwipeActionsConfiguration *configuration = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
    return configuration;
}

注意点

  1. 确保tableViewediting属性为YES
  2. editActionsForRowAtIndexPath:方法和trailingSwipeActionsConfigurationForRowAtIndexPath:方法只能实现一个,否则会报错。
  3. 左滑删除按钮的标题不能太长,否则会显示不全。
  4. 如果需要实现多个左滑删除按钮,可以使用UITableViewRowActionUIContextualActionbackgroundColor属性设置按钮的颜色。
  5. iOS 11 之后,如果需要在左滑删除按钮旁边显示其他按钮,可以使用UITableViewRowActionUIContextualActionimage属性设置按钮的图标。

总结

左滑删除是UITableView中常用的操作,在很多应用中都有使用。通过本文的讲解,相信大家已经掌握了iOS系统左滑删除的实现方法。如果大家还有其他问题,欢迎随时提出。