Я имею дело с проблемой, с которой я не могу работать ... У меня есть таблица имен из массива клиентов DB, каждый клиент имеет свойство имени среди других членов данных ,Удалить разделы UITable динамически с помощью commitEditingStyle в Swift
Я могу удалить строки в секции успешно, но то, что я не могу сделать, это удаление раздела (когда последняя строка в этом разделе удаляется, раздел должен исчезнуть).
я получил:
'NSInternalInconsistencyException', причина: «Invalid обновление: недопустимый количество секций. Количество разделов, содержащихся в таблице , просмотр после обновления (3) должен быть равен числу разделов , содержащихся в представлении таблицы перед обновлением (4), плюс или минус число вставленных или удаленных разделов (0 вставлено, 0 удалено).
Я знаю, что таблица выполняет некоторую проверку здравомыслия за кулисами данных, и это должно совпадать, но я не могу точно определить, когда, прежде чем вызывать deleteRowsAtIndexPaths? после? Когда я должен обновить свое свойство и/или словарь? Должен ли я управлять методом data-source numberOfSectionsInTableView?
Повторяю, для строк, удаляющих работу, таблица выходит из строки и обновляется должным образом. Последний ряд на секции - дело ...
Я думаю, что у меня что-то не хватает, вот почему я спрашиваю ... Не мог найти никакой помощи.
Спасибо вам большое!
func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
// handle delete (by removing the data from the array and updating the tableview)
//Check if delete was press
if editingStyle == .Delete {
//Delete row from dataSource
if let tv = tableView
{
customerList.removeAtIndex(returnPositionForThisIndexPath(indexPath, insideThisTable: tableView))
// Deletes the name of the customer from the customer list array, sorted by name
fillArrayOfNames()
//Fill the array of names for the sections-table, creating a dictionary with the name initials
//updated from the customer list array (below)
tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) //Crash in this line
tableView.reloadData()
}
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return dictionaryOfPatientsInitials.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var keysFromDictionary = dictionaryOfPatientsInitials.keys.array
keysFromDictionary.sort(<)
let keyByOrder = keysFromDictionary[section]
let arrayInThisSection = dictionaryOfPatientsInitials[keyByOrder]
return arrayInThisSection!.count
}
Является ли ваш источники данных изменяются? – Sirens
@ Сиренс Да, это так. Это свойство var. И словарь, и массив. –