我正在navigationItem.leftBarButtonItem = editButtonItem下实现viewDidLoad(),据说我也必须实现setEditing(_ editing: Bool, animated: Bool)。好像没有setEditing功能,每个编辑功能都可以正常工作。它有什么作用??

  override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.leftBarButtonItem = editButtonItem
    tableView.allowsMultipleSelectionDuringEditing = true
  }

    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: true)
        tableView.setEditing(tableView.isEditing, animated: true)
    }

最佳答案

据说我也必须实现setEditing(_ edit:Bool,animation:Bool)

然后“说”不正确。

UITableViewController的内置editButtonItem会自动为您调用表格视图的setEditing;因此,无需重复该功能。更准确地说:

  • UIViewController的内置editButtonItem做两件事:
  • 在点击时调用UIViewController的setEditing(_:animated:)
  • 它跟踪UIViewController的isEditing属性,并相应地更改其自己的标题(“编辑”或“完成”)。
  • 此外,UITableViewController的setEditing(_:animated:)实现在其表视图上调用setEditing(_:animated:)

  • 因此,如果不是UITableViewController,则需要执行最后一步。但是,事实并非如此。

    关于ios - setEditing()在Swift中到底做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56229680/

    10-11 19:23