Я пытаюсь удалить строки, удалить разделы и перезагрузить строки одновременно. Я сделал простое приложение, чтобы продемонстрировать мой cra sh. Начинается с 3 разделов. Когда вызывается buttonPressed
, разделы 0 и 1 удаляются из data
, затем вызывается performBatchUpdates
для обновления представления таблицы.
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
var data: [[String]] = [
["0-0"],
["1-0"],
["2-0",
"2-1",
"2-2"],
]
@IBAction func buttonPressed(_ sender: UIButton) {
data = [
["2-0 new",
"2-1 new",
"2-2 new"],
]
tableView.performBatchUpdates({
self.tableView.deleteRows(at: [
IndexPath(row: 0, section: 0),
IndexPath(row: 0, section: 1),
], with: .automatic)
self.tableView.reloadRows(at: [
IndexPath(row: 0, section: 2),
IndexPath(row: 1, section: 2),
IndexPath(row: 2, section: 2),
], with: .automatic)
self.tableView.deleteSections(IndexSet([0, 1]), with: .automatic)
}, completion: nil)
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data[section].count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = data[indexPath.section][indexPath.row]
return cell
}
}
Я получаю следующее исключение учета строк / разделов, но Я не понимаю, откуда взялись некоторые числа:
Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество строк в разделе 0. Число количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк, содержащихся в этом разделе до обновления (3), плюс или минус количество строк, вставленных или удаленных из этого раздела (2 вставлено, 3 удалено) ) и плюс или минус количество строк, перемещенных в этот раздел или из него (0 перемещено, 0 перемещено). '