在我的表视图中,我实现了func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
以提供删除功能。我想确认删除,所以我显示一个带有删除或取消提示的UIAlertController
。当用户决定取消时,该单元应该恢复为不编辑。通常,这可以通过调用tableView?.setEditing(false, animated: true)
来实现,但这不适用于长时间的滑动。
理想情况下,即使单元格已完全滑动,我也希望tableView?.setEditing(false, animated: true)
能够正常工作。
其他选项是简单地省略完全滑动的确认,但是我需要一种方法来确定是长刷还是短滑。
如何实现这些结果的方式是什么?
由于
答案 0 :(得分:0)
我现在正处理同样的问题。我尝试了一切,但分辨率很简单。在创建UIContextualAction时,它将handler作为一个参数。处理程序有点像关闭。闭包有3个参数。最后一个是完成处理程序。简单地说,当你完成后,只需用true调用这个处理程序就可以了。我希望它有所帮助。
let removeHandler:UIContextualActionHandler = { (action, view, finished) in
let alert = UIAlertController(title: "Warning", message: "Do you really want to remove this?", preferredStyle: .alert)
let removeButton = UIAlertAction(title: "Remove", style: .destructive, handler: { (action) in
finished(true)
CameraManager.shared.removeCamera(index: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
})
let cancelButton = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alert.addAction(removeButton)
alert.addAction(cancelButton)
self.present(alert, animated: true)
}
let removeAction = UIContextualAction(style: .destructive, title: "Odstrániť", handler: removeHandler)
let conf = UISwipeActionsConfiguration(actions: [removeAction])