75368


## スワイプメニューを閉じたい

スワイプで`メニュー`を出し、Doneアクションでチェックマークをつけて、`メニュー`を閉じたいのですが、どうすればいいですか？

[code]

    override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
            let action = UIContextualAction(style: UIContextualAction.Style.normal, title: "Done") { (action, view, completionHandler) in
            let cell = tableView.cellForRow(at:indexPath)
            cell?.accessoryType = UITableViewCell.AccessoryType.checkmark
        }
        return UISwipeActionsConfiguration(actions: [action])
    }
    
    
[/code]

![](https://i.stack.imgur.com/oosRh.png)


CC BY-SA 4.0
2021-04-18T17:07:30.267
75365
2021-04-19T00:12:46.257
40856
question
swift
UITableViewのセルをスワイプした際のActionを実行した後に戻したい(メニューを閉じたい)


`UIContextualAction`のインスタンス作成時に渡す`handler:`クロージャーの実装方法が誤っています。処理が全て完了した後には、必ず`completionHandler`を呼んでやらないといけません。

[code]

        func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
            let action = UIContextualAction(style: UIContextualAction.Style.normal, title: "Done") { (_, _, completionHandler) in
                let cell = tableView.cellForRow(at:indexPath)
                cell?.accessoryType = .checkmark
                completionHandler(true) //<-actionが実行された場合、`true`を渡す
            }
            return UISwipeActionsConfiguration(actions: [action])
        }
    
[/code]


CC BY-SA 4.0
2021-04-19T00:12:46.257
75368
2021-04-19T00:12:46.257
13972
75365
answer