关闭UITableViewRowAction

时间:2014-10-04 22:33:25

标签: ios swift

我有一个自定义的UITableViewRowAction设置和工作。我唯一无法解决的是如何在选择一个动作后解除UITableViewRowAction。我确定我错过了一些非常明显的东西。这是我目前的设置:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

    var moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "In", handler:{action, indexpath in
        //Some code to execute here
    });
    moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0)

    return [moreRowAction];
}

感谢您的任何建议。

4 个答案:

答案 0 :(得分:68)

您解除了在操作被点击时调用的处理程序中的操作。 The documentation描述了处理程序如下

  

当用户点击与此操作关联的按钮时执行的块。 UIKit会复制您提供的块。当用户选择此对象表示的操作时,UIKit会在应用程序的主线程上执行处理程序块。

我认为您可以将表视图editing属性设置为false。

tableView.setEditing(false, animated: true)

答案 1 :(得分:6)

这对我有用:

tableView.editing = NO;

答案 2 :(得分:1)

调用tableView.setEditing(false, animated: true)似乎只在某些时候有效。最终,表视图似乎进入了不再显示编辑操作的状态。

我发现简单地调用tableView.reloadRows(at: [indexPath], with: .none)可以更有效地工作。

答案 3 :(得分:1)

它适用于Swift 3中的mi:

self.tableView.setEditing(false, animated: true)