Ich habe eine Methode erstellt, die mein UITableView aktualisiert, wenn der Benutzer eine Zelle löschen möchte.
%Vor%p_currentFriends ist ein NSMutableArray, das alle von UITableView gedruckten Objekte enthält.
Diese Methode funktioniert gut, wenn ich sie einmal benutze, aber sie schlägt fehl, wenn ich sie mehrmals benutze.
Offenbar bleibt der indexPath bei jedem Aufruf von deleteRowsAtIndexPaths gleich.
Zum Beispiel - Beim ersten Aufruf klickt der Benutzer auf die zweite Zelle indexPath = [0,1] und die korrekte Zelle wird gelöscht. - Beim zweiten Aufruf antippt der Benutzer die dritte Zelle und indexPath = [0,3] statt [0,2]
/ * Ich hoffe, ich bin klar genug: / * /
Der einzige Weg, den ich gefunden habe, um es funktionieren zu lassen, ist reloadData zu verwenden, aber ich möchte eine Animation zum Löschen der Zelle haben.
Hat jemand eine Lösung oder einen Hinweis?
Swift 2.2
Die beste Lösung, die ich gefunden habe, ist ein NSTimer
einzustellen und die Nachladedaten 0,5 Sekunden später aufzurufen, was genügend Zeit für die Beendigung der Animation bietet. Die Selector("loadData")
ist eine Methode, die tableview.reloadData()
%Vor%Swift 3.0
Sie sollten delteRowsAtIndexPaths: und andere Tabellenbearbeitungsvorgänge mit beginUpdates umgeben und endUpdates . Das könnte dein Problem lösen.
Die reloadSections:
-Methode funktioniert, aber Sie erhalten keine normale Animation zum Löschen einer Zeile, sondern stattdessen eine Fade-Animation. In iOS 11 ist eine neue Methode verfügbar, die das löst:
Tags und Links objective-c uitableview