UITableView禁用滑动以删除特定单元格swift

时间:2018-03-02 06:08:43

标签: ios swift uitableview

我正在尝试禁用滑动以删除tableview中某些特定单元格的操作。但我无法在迅捷中找到一个好的解决方案。当覆盖" tableView.isEditing = true"时,我不希望在单元格上留下左侧减号。 method.Here是我的代码。下面的代码没有禁止使用statusId" 12"滑动到单元格。希望你能理解我的问题。

String input = "These are appleapple and guavaguava"; 
and expected output is: These are apple and guava.

5 个答案:

答案 0 :(得分:12)

您可以自定义UITableViewDelegate的功能editingStyleForRowAt,尤其是当您不需要滑动时返回UITableViewCellEditingStyle.none,例如:

public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle
{
   if mainList[indexPath.row].statusId == "12" {
        return UITableViewCellEditingStyle.none
    } else {
        return UITableViewCellEditingStyle.delete
    }
}

答案 1 :(得分:2)

使用此表视图委托方法

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

}

Documentation tableView:canEditRowAtIndexPath:

答案 2 :(得分:0)

我在尝试编辑myTableview时试图禁用/启用删除功能。 这是我的解决方案:

public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle
{
    if !myTableView.isEditing {
        return UITableViewCell.EditingStyle.none
    } else {
        return UITableViewCell.EditingStyle.delete
    }
}

答案 3 :(得分:0)

感谢您发布此问题和上面的答案。

根据答案的扩展,我有一个永远都不应删除的默认行,因此我在该特定单元格上设置了标签,然后首先 使用此方法。

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    if tableView.cellForRow(at: indexPath)?.tag == 100 {
        return false
    }
    return true
}

如何-这在调试器中导致以下警告-

  

尝试在表视图上同时调用-cellForRowAtIndexPath:   正在更新其可见单元格,而不是   允许。

因此,正如其他评论员所说的,请在下面使用此方法:

Swift 5.0

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
    if tableView.cellForRow(at: indexPath)?.tag == 100 {
        return UITableViewCell.EditingStyle.none
    } else {
        return UITableViewCell.EditingStyle.delete
    }
}

答案 4 :(得分:-1)

viewDidLoad中的Swift 4.2只是将表值设置为...

myTableView.isEditing = false