返回
iOS系统左滑删除的详细教程
IOS
2023-10-10 12:55:29
前言
整理一下UITableView
的cell
左滑删除的注意点,实现一个简单的左滑删除功能。整理的过程也是一个回归的过程,有时候一些功能很久没写就忘记了系统的实现方法。iOS 11之前的editActionsForRowAtIndexPath:
方法可以用自定义滑动编辑按钮进行左滑删除的操作,iOS 11之后的方法不再支持自定义按钮。
iOS 11 之前
iOS 11 之前,需要先设置tableView
的editing
属性为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;
}
注意点
- 确保
tableView
的editing
属性为YES
。 editActionsForRowAtIndexPath:
方法和trailingSwipeActionsConfigurationForRowAtIndexPath:
方法只能实现一个,否则会报错。- 左滑删除按钮的标题不能太长,否则会显示不全。
- 如果需要实现多个左滑删除按钮,可以使用
UITableViewRowAction
或UIContextualAction
的backgroundColor
属性设置按钮的颜色。 - iOS 11 之后,如果需要在左滑删除按钮旁边显示其他按钮,可以使用
UITableViewRowAction
或UIContextualAction
的image
属性设置按钮的图标。
总结
左滑删除是UITableView
中常用的操作,在很多应用中都有使用。通过本文的讲解,相信大家已经掌握了iOS系统左滑删除的实现方法。如果大家还有其他问题,欢迎随时提出。