簡體   English   中英

UITableViewRowAction操作是在滑動而不是在點擊時觸發的

[英]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尾隨滑動動作

記住tableView.isEditingfalse以允許trailingSwipeActionsConfigurationForRowAt被調用。

completionHandler(true) //傳遞true啟用處理程序調用操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM