快速禁用表格视图单元格中的滑动操作

时间:2018-07-12 10:07:36

标签: swift tableview

我已经为表格视图单元实现了滑动操作,它们是两个操作:AcceptReject

第一次滑动时,它必须出现;第二次滑动单元格时,它不应打开。

单元格的滑动动作必须处于禁用模式。

3 个答案:

答案 0 :(得分:1)

首先,您应该跟踪与之交互的单元格的indexPath。

private var disabledCellsIndexPath = [IndexPath]()

然后在用于配置滑动操作(this is the new iOS 11 API)的方法中:

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    let action = UIContextualAction(style: .normal, title: "Action Title", handler: { _, _, completionHandler in

        // DO WHAT YOU WANT HERE
        // …

        // This is where you specify that this specific cell should be 'disabled'
        self?.disabledCellsIndexPath.append(indexPath)

        completionHandler(true)
    })

    return UISwipeActionsConfiguration(actions: [action])
}

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return !disabledCellsIndexPath.contains(indexPath)
}

答案 1 :(得分:0)

如果我正确理解了您的问题,请遵循以下概括性思想

  
    

您可以在应用程序结束数据库中管理该indexPath的标志。每当需要打开或禁用它(即管理它)时,都可以启用/禁用该indexPath的编辑操作。

  

答案 2 :(得分:0)

在需要swipe Enable时使用allowEdit标志。否则将其设为假。

var allowEdit: Bool = true
    func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return allowEdit
    }



     func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?
        {
           if allowEdit{
               /*to perform Accept and Reject action on row*/
           }
    }