长时间滑动后,UITableView跟踪滑动短与长或返回单元格

时间:2017-10-15 20:10:23

标签: ios swift uitableview ios11

在我的表视图中,我实现了func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?以提供删除功能。我想确认删除,所以我显示一个带有删除或取消提示的UIAlertController。当用户决定取消时,该单元应该恢复为不编辑。通常,这可以通过调用tableView?.setEditing(false, animated: true)来实现,但这不适用于长时间的滑动。

理想情况下,即使单元格已完全滑动,我也希望tableView?.setEditing(false, animated: true)能够正常工作。

其他选项是简单地省略完全滑动的确认,但是我需要一种方法来确定是长刷还是短滑。

如何实现这些结果的方式是什么?

由于

1 个答案:

答案 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])