我不确定我是否正确理解,这里的文档有点混乱,但是在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()的目的?

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 Trailing Swipe Action

记住tableView.isEditing需要是false才能允许trailingSwipeActionsConfigurationForRowAt被调用。

completionHandler(true) //传递true启用处理程序调用操作

关于ios - UITableViewRowAction操作是在滑动而不是在点击时触发的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54174735/

10-11 19:55