setEditing()在Swift中到底做什么?

时间:2019-05-21 00:28:43

标签: ios swift

我正在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)
    }

1 个答案:

答案 0 :(得分:5)

  

据说我也必须实现setEditing(_编辑:Bool,动画:Bool)

然后错误地“说”。

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

  1. UIViewController的内置editButtonItem做两件事:

    • 在点击时调用UIViewController的setEditing(_:animated:)

    • 它跟踪UIViewController的isEditing属性,并相应地更改其标题(“编辑”或“完成”)。

  2. 此外,UITableViewController的setEditing(_:animated:)实现在其表视图上调用setEditing(_:animated:)

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