当用户向左滑动单元格时,我有一个tableView想要在其中进行编辑和删除按钮。为此,我使用tableView的trailingSwipeActionsConfigurationForRowAt
委托方法。一切正常,它按预期显示了两个按钮。
我想在用户点击删除时显示确认警报。这也可以正常工作,但是当出现警报时,单元会设置动画回其原始位置。因此,删除,编辑按钮不再可见。这就是我不想要的。
是否存在一种方法来防止单元格在发出警报时回弹?
答案 0 :(得分:0)
我已经找到解决该问题的方法。
为了设置按钮的动作,您需要初始化UIContextualAction
类。此类的处理程序的布尔值类型为(Bool) -> Void
。因此,基本上,当您设置处理程序关闭时,您可以返回true或false,这意味着操作已完成。因此,如果您在用户点击警报按钮时调用完成按钮,则这些按钮将保持可见状态,直到解除警报为止。
我尝试过并起作用的代码如下:
// 1
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
//2
let action = UIContextualAction(style: .normal, title: "") { _, _, success in
let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK", style: .cancel, handler: { _ in
//3
success(true)
})
alertController.addAction(alertAction)
self.present(alertController, animated: true, completion: nil)
}
return UISwipeActionsConfiguration(actions: [action])
}
实施trailingSwipeActionsConfigurationForRowAt
委托方法以设置滑动操作。如果通过实现leadingSwipeActionsConfigurationForRowAt
委托方法向右滑动,则在需要按钮时也可以执行相同的操作。
为按钮设置操作。在UIContextualAction
的处理程序关闭中,您可以设置alertController。
在点击警报的“确定”按钮时呼叫success(true)
。