首页 > 解决方案 > 如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除

问题描述

对于我的应用程序来说,从右侧完全滑动以从 tableView 中删除太危险了,因为我的用户报告意外丢失了数据。

我可以添加一个“你确定吗?” 提示,但我希望允许出现删除按钮,但禁用完全滑动行为。

我怎样才能做到这一点?

标签: iosobjective-cuitableview

解决方案


通过用您自己的副本替换通常的删除按钮行为来做到这一点,将 performFirstActionWithFullSwipe 设置为 FALSE

    - (UISwipeActionsConfiguration *) tableView:(UITableView *)tableView
    trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
        //optional- returns previous behaviour when table is in edit mode
        if (tableView.editing ) {
            return nil;
        }

        UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"Delete" 
handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
                 // call your existing delete code
                [self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath ];
        }];

        UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
        config.performsFirstActionWithFullSwipe=FALSE; // this is why we are replacing the delete button!
        return config;
    }

推荐阅读