Wie wird die Schaltfläche zum Löschen angezeigt, wenn ich auf einem wische UITableViewCell
? Das Ereignis wird nie ausgelöst und die Schaltfläche zum Löschen wird nie angezeigt.
ios
uitableview
cocoa-touch
uikit
Der Lernende
quelle
quelle
UITableViewCell
s zeigt.Antworten:
Während des Startvorgangs in
(-viewDidLoad or in storyboard)
do:Überschreiben, um die bedingte Bearbeitung der Tabellenansicht zu unterstützen. Dies muss nur implementiert werden, wenn Sie
NO
für einige Artikel zurückkehren möchten. Standardmäßig können alle Elemente bearbeitet werden.quelle
self.tableView.allowsMultipleSelectionDuringEditing = NO;
dass der linke Wisch funktioniert. Das klingt für mich nach einem Fehler, da sich die Tabelle NICHT im Bearbeitungsstatus befindet. Diese Option sollte nur "Während der Bearbeitung" gelten. Es funktioniert jetzt jedoch und ich setze es auf YES, wenn die Tabelle in den Bearbeitungsstatus wechselt.Diese Antwort wurde auf Swift 3 aktualisiert
Ich finde es immer schön, ein sehr einfaches, in sich geschlossenes Beispiel zu haben, damit beim Lernen einer neuen Aufgabe nichts angenommen wird. Diese Antwort dient zum Löschen von
UITableView
Zeilen. Das Projekt läuft folgendermaßen ab:Dieses Projekt basiert auf dem UITableView-Beispiel für Swift .
Fügen Sie den Code hinzu
Erstellen Sie ein neues Projekt und ersetzen Sie den Code ViewController.swift durch den folgenden.
Die Einzelschlüsselmethode im obigen Code, die das Löschen von Zeilen ermöglicht, ist die letzte. Hier ist es wieder zur Betonung:
Storyboard
Fügen Sie
UITableView
dem Story Controller im Storyboard ein hinzu. Verwenden Sie das automatische Layout, um die vier Seiten der Tabellenansicht an den Rändern des View Controllers zu befestigen. Steuern Sie das Ziehen von der Tabellenansicht im Storyboard auf die@IBOutlet var tableView: UITableView!
Zeile im Code.Fertig
Das ist alles. Sie sollten jetzt in der Lage sein, Ihre App auszuführen und Zeilen zu löschen, indem Sie nach links wischen und auf "Löschen" tippen.
Variationen
Ändern Sie den Text der Schaltfläche "Löschen"
Fügen Sie die folgende Methode hinzu:
Benutzerdefinierte Schaltflächenaktionen
Fügen Sie die folgende Methode hinzu.
Beachten Sie, dass dies nur unter iOS 8 verfügbar ist. Weitere Informationen finden Sie in dieser Antwort .
Aktualisiert für iOS 11
Aktionen können mithilfe von Methoden, die der UITableViewDelegate-API in iOS 11 hinzugefügt wurden, entweder vor oder nach der Zelle platziert werden.
Weiterführende Literatur
quelle
UITableView
ein , das ist ein ganz allein Projekt steht und Sie nicht zu tun , etwas braucht , die hier nicht beschrieben ist. Der Grund, warum ich damit begonnen habe, es in Code zu setzen, ist, dass meine Antworten weniger Erklärungen erfordern. Ich sollte zurückgehen und das grundlegende Beispiel bearbeiten, um auch Code zu verwenden.Dieser Code zeigt, wie das Löschen implementiert wird.
Fügen Sie in Ihrer Initialisierungsüberschreibung optional die folgende Zeile hinzu, um das Schaltflächenelement Bearbeiten anzuzeigen:
quelle
Ich hatte ein Problem, das ich gerade gelöst habe, also teile ich es, da es jemandem helfen kann.
Ich habe eine UITableView und habe die angezeigten Methoden hinzugefügt, damit Swipe gelöscht werden kann:
Ich arbeite an einem Update, mit dem ich die Tabelle in den Bearbeitungsmodus versetzen und die Mehrfachauswahl aktivieren kann. Dazu habe ich den Code aus dem TableMultiSelect- Beispiel von Apple hinzugefügt . Sobald ich das zum Laufen gebracht hatte, stellte ich fest, dass mein Löschen die Löschfunktion nicht mehr funktionierte.
Es stellt sich heraus, dass das Hinzufügen der folgenden Zeile zu viewDidLoad das Problem war:
Mit dieser Zeile würde die Mehrfachauswahl funktionieren, das Wischen zum Löschen jedoch nicht. Ohne die Linie war es umgekehrt.
Die Reparatur:
Fügen Sie Ihrem viewController die folgende Methode hinzu:
In Ihrer Methode, mit der die Tabelle in den Bearbeitungsmodus versetzt wird (z. B. durch Drücken einer Taste), sollten Sie Folgendes verwenden:
anstatt:
Dies bedeutet, dass die Mehrfachauswahl nur aktiviert ist, wenn sich die Tabelle im Bearbeitungsmodus befindet.
quelle
Unten hilft Ihnen UITableViewDataSource beim Löschen durch Wischen
arrYears ist ein NSMutableArray und lädt dann die tableView neu
Schnell
quelle
In iOS 8 und Swift 2.0 versuchen Sie dies bitte,
quelle
Die Antwort von @ Kurbz ist großartig, aber ich möchte diese Notiz hinterlassen und hoffe, dass diese Antwort den Menschen Zeit sparen kann.
Ich hatte gelegentlich diese Zeilen in meinem Controller und sie führten dazu, dass die Wischfunktion nicht funktionierte.
Wenn Sie
UITableViewCellEditingStyleInsert
oderUITableViewCellEditingStyleNone
als Bearbeitungsstil verwenden, funktioniert die Wischfunktion nicht. Sie können nurUITableViewCellEditingStyleDelete
den Standardstil verwenden.quelle
Swift 4
quelle
Dies kann auch in SWIFT unter Verwendung des folgenden Verfahrens erreicht werden
quelle
Swift 3
Sie müssen lediglich diese beiden Funktionen aktivieren:
quelle
Ich weiß, ist eine alte Frage, aber die Antwort von @Kurbz benötigt diese nur für Xcode 6.3.2 und SDK 8.3
Ich muss hinzufügen
[tableView beginUpdates]
und[tableView endUpdates]
(danke an @ bay.phillips hier )quelle
Wenn Sie eine Zelle Ihrer Tabellenansicht entfernen, müssen Sie auch Ihr Array-Objekt am Index x entfernen.
Ich denke, Sie können es mit einer Wischgeste entfernen. In der Tabellenansicht wird der Delegat aufgerufen:
Nach dem Entfernen des Objekts. Sie müssen die Tabellenansicht neu laden. Fügen Sie Ihrem Code die folgende Zeile hinzu:
Danach haben Sie die Zeile erfolgreich gelöscht. Und wenn Sie die Ansicht neu laden oder Daten zur DataSource hinzufügen, ist das Objekt nicht mehr vorhanden.
Für alle anderen ist die Antwort von Kurbz richtig.
Ich wollte Sie nur daran erinnern, dass die Delegatenfunktion nicht ausreicht, wenn Sie das Objekt aus dem DataSource-Array entfernen möchten.
Ich hoffe ich habe dir geholfen.
quelle
[tableView reloadData]
anzurufen[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]
.quelle
Swift 2.2:
quelle
Für Swift schreiben Sie einfach diesen Code
Schreiben Sie für Ziel C einfach diesen Code
quelle
Aktivieren Sie für swift4-Code zunächst die Bearbeitung:
Anschließend fügen Sie dem Bearbeitungsdelegierten eine Löschaktion hinzu:
quelle
Swift 4,5
Um eine Zelle beim Wischen zu löschen, gibt es zwei integrierte Methoden von UITableView. Schreiben Sie diese Methode in die TableView dataSource-Erweiterung.
quelle
Wenn Sie unterschiedliche Datenquellen verwenden, müssen Sie die Rückrufe der Delegierten in eine
UITableViewDiffableDataSource
Unterklasse verschieben. Zum Beispiel:quelle