我有一个自定义的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];
}
感谢您的任何建议。
答案 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)