我正在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)
}
答案 0 :(得分:5)
据说我也必须实现setEditing(_编辑:Bool,动画:Bool)
然后错误地“说”。
UITableViewController的内置editButtonItem
会自动为您调用表视图的setEditing
;因此,无需重复该功能。更准确地说:
UIViewController的内置editButtonItem
做两件事:
在点击时调用UIViewController的setEditing(_:animated:)
。
它跟踪UIViewController的isEditing
属性,并相应地更改其标题(“编辑”或“完成”)。
此外,UITableViewController的setEditing(_:animated:)
实现在其表视图上调用setEditing(_:animated:)
。
因此,如果不是UITableViewController,则将需要执行最后一步。但事实并非如此。