通过在 tableView 中滑动单元格发出编辑模式

Issue Editing Mode by swiped cell in tableView

我有以下问题。如果我只滑动单元格直到删除按钮可见,然后单击编辑,table 未处于编辑模式但按钮显示它。

我已经看到方法 shouldBeginEditingAtRowdidEndEditingAtRow 如果我先滑动一行直到删除按钮然后再滑动下一行,tableView.isEditingtrue。 这意味着如果我滑动一行直到删除按钮可见,然后单击编辑,setEditing 会将 tableView 的状态设置为 false

我已经尝试在 didEndEditingAtRow method.But 中将状态设置为 false,不幸的是这没有用。你有什么建议或解决方案吗?

我的代码:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    var data = [1,2,3,4,5,6,7,8,9]
    
    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(!isEditing, animated: true)
        tableView.setEditing(!tableView.isEditing, animated: true)
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.text = String(data[indexPath.row])
        return cell
    }
    
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            data.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .automatic)
        }
    }

    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        tableView.dataSource = self
        tableView.delegate = self
        
        
        navigationItem.rightBarButtonItem = editButtonItem
    }


}

首先,每当您重写 UIKit 方法时,请尝试从您重写的方法中传递参数因此使用以下行更新 setEditing 方法:

   override func setEditing(_ editing: Bool, animated: Bool) {
         super.setEditing(editing, animated: true)
             //handle Animation
             if editing  {
               self.tableView.reloadSections(IndexSet(integersIn: 0...0), with: .none)
             }
         tableView.setEditing(editing, animated: true)
 }