禁用 UITableView 中特定 UITableViewCell 的删除选项

Disable delete option for specific UITableViewCell in a UITableView

对于 UITableViews,我添加了三个不同的单元格

如何为特定单元格启用删除选项

 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

    switch dataSource[indexpath.section].menu {
        case  "Attachment":
            if editingStyle == AttachmentTableViewCell.EditingStyle.delete {
                attachmentList.remove(at: indexPath.row)
                tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
            }
            break
        default:
            break

    }
}

在这种情况下,它也显示其他单元格的删除选项。 如何停止在向其他 UITableViewCell 滑动时显示删除选项。

为不应显示删除选项的索引路径实施 tableView(_:editingStyleForRowAt:) 和 return none

这对我有用。

正在覆盖 UITableViewController 中的此函数 或实施它 UITableViewDelegate

override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?

索引路径是您想要的操作 return a UISwipeActionsConfiguration else return nil.

像这样

override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
         
    // return nil on specific rows
    guard indexPath.row != 1 else {
        return nil
    }
        
    let contexualAction = UIContextualAction(style: .normal, title: "Action") { _, _, _ in
        // Do Action
    }
    let swipeAction = UISwipeActionsConfiguration(actions: [contexualAction])

    return swipeAction
}