[英]UITableViewRowAction action is triggered on swipe instead on tap
我不确定我是否正确理解,这里的文档有点混乱,但是在UITableView委托的主体中给出了以下代码:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let action = UITableViewRowAction(style: UITableViewRowAction.Style.normal,
title: "Do Something!") { (_, indexPath) in
self.doSomething()
}
return [action]
}
调用doSomething()
方法的操作是在模拟器中完成“向左滑动”操作后,点击“做某事!”之后执行的 按钮。 我不希望通话被执行两次。 我的配置有问题吗?还是我不了解UITableViewRowAction
的目的?
TLDR:我希望仅在点击出现的按钮时才触发滑动动作回调。
谢谢。
为了防止这种行为,您需要实现新的iOS。
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let myAction = UIContextualAction(style: .someStyle, title: "Some tilte") { (action, sourceView, completionHandler) in
print("action has been triggered")
completionHandler(true)
}
let preventSwipeFullAction = UISwipeActionsConfiguration(actions: [myAction ])
preventSwipeFullAction .performsFirstActionWithFullSwipe = false // set false to disable full swipe action
return preventSwipeFullAction
}
记住tableView.isEditing
需false
以允许trailingSwipeActionsConfigurationForRowAt
被调用。
completionHandler(true)
//传递true启用处理程序调用操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.