如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除

Posted

技术标签:

【中文标题】如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除【英文标题】:How can I get iOS to show a delete button on a tableView, but not allow a full swipe from the right to delete 【发布时间】:2019-09-24 13:07:09 【问题描述】:

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

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

我该怎么做?

【问题讨论】:

【参考方案1】:

通过用您自己的副本替换通常的删除按钮行为来做到这一点,将 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;
    

【讨论】:

以上是关于如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在iOS中进行JSON Pasing一次在tableview上显示不同的图像?

如何持久化 tableview 行?

IOS开发系列--TableView多个TableViewCell自定义CellCell上画画(故事板+代码方式),ios7tableview索引

IOS TableView 如何更新 TableView 中的元素

如何删除tableView单元iOS

ios tableView删除行