В моем табличном представлении после удаления записи я хочу отключить редактирование, если последняя запись была удалена, но даже после вызова setEditing
состояние не меняется.Вот упрощенный пример, который по-прежнему показывает поведение:
class TestViewController: UITableViewController {
var items = [String]()
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItems = [
UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(add)),
UIBarButtonItem(title: "Remove", style: .plain, target: self, action: #selector(remove))
]
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = self.items[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
self.items.remove(at: indexPath.row)
if self.items.count == 0 {
// This is getting executed, but not changing the table's state
self.tableView.setEditing(false, animated: false)
}
self.tableView.reloadData()
}
@objc func add () {
self.items.append("foo")
self.tableView.reloadData()
}
@objc func remove () {
self.tableView.setEditing(!self.tableView.isEditing, animated: true)
}
}
Нажатие кнопки «Удалить» включает и выключает редактирование без проблем, но если я удаляю последний, а затем добавляю новый, он все равнопоявляется в режиме редактирования.Я попытался пройти по коду, и он определенно попал в правильную строку, но даже после его выполнения tableView.isEditing
все еще верно.Что я тут не так делаю?