如何根据 UITableView 扩展中 tableview 的版本状态显示完成按钮?

How to show a done button depending on the edition status of a tableview, from a UITableView extension?

我写了一个 UITableView 扩展,允许在持有表格视图后重新排序单元格。

所以 tableView 按预期进入编辑模式,但我想做的是在 viewController 的导航栏中添加一个完成按钮,当正在编辑 tableView 时,这将结束编辑点击时的模式。

如何根据 UITableView 扩展中是否正在编辑 tableView 来 show/hide viewController 中的这个按钮?

这是我的分机:

import UIKit

extension UITableView {
    func addLongPressToTableView() {
        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(onLongPressGesture(sender:)))
        longPress.minimumPressDuration = 0.8 // optional
        self.addGestureRecognizer(longPress)
    }
    
    @objc func onLongPressGesture(sender: UILongPressGestureRecognizer) {
        if (sender.state == .began) {
            self.isEditing = true
            self.setEditing(true, animated: false)
            UIImpactFeedbackGenerator(style: .light).impactOccurred()
        }
    }
}

// ViewController, hide/show editButtonItem (done button?)
// navigationItem.rightBarButtonItems = [addButton, editButtonItem]

UITableViewDelegate 提供对协调编辑的支持。使用以下两个委托方法来响应编辑状态的变化。

func tableView(UITableView, willBeginEditingRowAt: IndexPath)

func tableView(UITableView, didEndEditingRowAt: IndexPath?)