ich diesen Code habe zu löschen:EXC_BAD_ACCESS wenn ich versuche, einen UITableView Abschnitt
// - Update the data source
self.order.persons.removeAtIndex(index)
// - Disable the user interaction
self.tableView.userInteractionEnabled = false
// - Delete the needed section from the table view
let sectionIndexSet = NSIndexSet(index: self.order.persons.count - 1)
self.tableView.beginUpdates()
self.tableView.deleteSections(sectionIndexSet, withRowAnimation: .Automatic)
self.tableView.endUpdates()
// - Update the table view with a delay to update all the indexes
NSTimer.scheduledTimerWithTimeInterval(0.3, handler: {
self.tableView.userInteractionEnabled = true
self.tableView.reloadData()
})
So ist das Problem:
Fall 1: Wenn auf der sichtbaren Zone der Tabellenansicht ist eine weitere Abschnitte, nicht nur die, die ich löschen möchte, funktioniert alles super.
CASE 2: Wenn auf der sichtbaren Zone der Tabellenansicht ist nur der Abschnitt, den ich, den Debugger Stopp an der Linie löschen möchten:
self.tableView.endUpdates()
und gibt den Fehler:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x0).
ich verstehe nicht, warum Fall 1 ist große Arbeit, aber Fall 2 nicht. Zur Information verwende ich wiederverwendbare Zellen.
bitte, teilen sich die ganze stacktrace – ddb
Zunächst Sie müssen den 'NSIndexSet' Initialisierer mit' verwenden row' und 'section' Parameter. Zweitens löschen Sie die Zeilen 'beginUpdates',' endUpdates' und 'reloadData',' deleteSections' arrangiert die Tabellenansicht automatisch neu und 'begin/endUpdates' wird für einen einzelnen Löschvorgang nicht benötigt. Und zu guter Letzt müssen Sie alle entsprechenden Elemente auch im Datenquellen-Array löschen ** bevor Sie 'deleteSections' aufrufen. – vadian
@vadian Ich habe versucht, ohne 'begin/endUpdates' oder' reloadData' und das gleiche Ergebnis. 'NSIndexSet' hat keinen Initialisierer mit Zeile und Abschnitt,' NSIndexPath' hat einen, aber in meinem Fall muss ich einen Abschnitt löschen, daher kann ich 'NSIndexPath' nicht verwenden. –