• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

swift delete row with animation

SpecialFighter

Fießers Erstling
Registriert
25.04.12
Beiträge
131
hallo zusammen,

habe einen tableview welcher mit daten aus coredata gefüllt wird.
habe auch einen Code, welcher mir beim swipe den jeweiligen Datensatz löscht.
allerdings möchte ich gerne die row mit einer animation löschen.

hatte jetzt diese code:

Code:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if (editingStyle == .Delete) {

        let LM_ITEM = lebensmittel[indexPath.row]
        managedObjectContext!.deleteObject(lebensmittel[indexPath.row])
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
        self.DatenAbrufen()

    }
}

allerdings stürzt die app nach dem swipe und delete klick touch ab:
Code:
2015-08-28 09:27:27.475 [32099:346567] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-3347.44.2/UITableView.m:1623
2015-08-28 09:27:27.483 [32099:346567] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001091cdc65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010b126bb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001091cdaca +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x00000001098ac98f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
    4   UIKit                               0x0000000109f37c13 -[UITableView _endCellAnimationsWithContext:] + 12678
    5   UIKit                               0x0000000119d2937b -[UITableViewAccessibility deleteRowsAtIndexPaths:withRowAnimation:] + 48
    6   App Name                        0x00000001087ca640 _TFC12App_Name26AlteLebensmittelController9tableViewfS0_FTCSo11UITableView18commitEditingStyleOSC27UITableViewCellEditingStyle17forRowAtIndexPathCSo11NSIndexPath_T_ + 3360
    7   App Name                        0x00000001087ca887 _TToFC12App_Name26AlteLebensmittelController9tableViewfS0_FTCSo11UITableView18commitEditingStyleOSC27UITableViewCellEditingStyle17forRowAtIndexPathCSo11NSIndexPath_T_ + 87
    8   UIKit                               0x0000000109f5d1e6 -[UITableView animateDeletionOfRowWithCell:] + 132
    9   UIKit                               0x0000000109f3c3bd __52-[UITableView _swipeActionButtonsForRowAtIndexPath:]_block_invoke + 72
    10  UIKit                               0x0000000109e5bd62 -[UIApplication sendAction:to:from:forEvent:] + 75
    11  UIKit                               0x0000000109f6d50a -[UIControl _sendActionsForEvents:withEvent:] + 467
    12  UIKit                               0x0000000109f6c8d9 -[UIControl touchesEnded:withEvent:] + 522
    13  UIKit                               0x0000000109ea8958 -[UIWindow _sendTouchesForEvent:] + 735
    14  UIKit                               0x0000000109ea9282 -[UIWindow sendEvent:] + 682
    15  UIKit                               0x0000000109e6f541 -[UIApplication sendEvent:] + 246
    16  UIKit                               0x0000000109e7ccdc _UIApplicationHandleEventFromQueueEvent + 18265
    17  UIKit                               0x0000000109e5759c _UIApplicationHandleEventQueue + 2066
    18  CoreFoundation                      0x0000000109101431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    19  CoreFoundation                      0x00000001090f72fd __CFRunLoopDoSources0 + 269
    20  CoreFoundation                      0x00000001090f6934 __CFRunLoopRun + 868
    21  CoreFoundation                      0x00000001090f6366 CFRunLoopRunSpecific + 470
    22  GraphicsServices                    0x000000010de80a3e GSEventRunModal + 161
    23  UIKit                               0x0000000109e5a8c0 UIApplicationMain + 1282
    24  App Name                        0x00000001087ebb67 main + 135
    25  libdyld.dylib                       0x000000010b868145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
 

Buhmi

Osnabrücker Reinette
Registriert
21.11.09
Beiträge
977
Du löschst 1. das Objekt nicht aus dem eigentlichen Array, das als Datasource dient (lebensmittel), zum anderen musst du dem TableView mit beginUpdates() und endUpdates() mitteilen, dass jetzt eine Änderung stattfindet. Ablauf wäre grob folgender:

tableView.beginUpdates()
Objekt aus Lebensmittel löschen (ggf auch aus der Datenbank)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
tableView.endUpdates()

Auch das steht aber 200x im Netz und in der Doku :)
 

SpecialFighter

Fießers Erstling
Registriert
25.04.12
Beiträge
131
vielen dank !! :)
das mit beginUpdates und endUpdates hatte ich alles getestet und nichts hat funktioniert.
aber das wichtigste habe ich vergessen:

Du löschst 1. das Objekt nicht aus dem eigentlichen Array, das als Datasource dient (lebensmittel),
 
Zuletzt bearbeitet: