UITableViewCell: Löschen von Einträgen
Einige iOS-Anwendungen, die ein UITableView verwenden, erlauben es dem Nutzer, während der Laufzeit des Programms Einträge aus der Tabelle zu entfernen. Dazu streicht der Anwender für gewöhnlich über die Zelle, woraufhin eine Löschen-Schaltfläche angezeigt wird. Diese Funktionalität ist ebenfalls leicht zu implementieren, wobei sich die Aufgaben der Tabelle auf den grafischen Teil beschränken. Wollen Sie tatsächlich ein Objekt löschen, müssen Sie die nötigen Anweisungen selbst programmieren.
Im ersten Schritt ist es zunächst erforderlich, das Bearbeiten der Zelle zu erlauben. Dafür genügt es, aus der Methode tableView:canEditRowAtIndexPath ein YES zurück zu geben. Diese Methode ist Teil des UITableViewDataSource-Protokoll und muss ebenfalls nicht im Header der Klasse deklariert werden.
Einige iOS-Anwendungen, die ein UITableView verwenden, erlauben es dem Nutzer, während der Laufzeit des Programms Einträge aus der Tabelle zu entfernen. Dazu streicht der Anwender für gewöhnlich über die Zelle, woraufhin eine Löschen-Schaltfläche angezeigt wird. Diese Funktionalität ist ebenfalls leicht zu implementieren, wobei sich die Aufgaben der Tabelle auf den grafischen Teil beschränken. Wollen Sie tatsächlich ein Objekt löschen, müssen Sie die nötigen Anweisungen selbst programmieren.
Im ersten Schritt ist es zunächst erforderlich, das Bearbeiten der Zelle zu erlauben. Dafür genügt es, aus der Methode tableView:canEditRowAtIndexPath ein YES zurück zu geben. Diese Methode ist Teil des UITableViewDataSource-Protokoll und muss ebenfalls nicht im Header der Klasse deklariert werden.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } |
Das tatsächliche Löschen der Tabellenzellen und auch der Daten geschieht in der tableView:commitEditingStyle-Methode, wobei man darauf achten muss, das Daten-Objekt vor der angezeigten Zelle zu entfernen, da das TableView-Steuerelement schon die zukünftige Anzahl der Objekte benötigt.
Um für unsere Anwendung die richtigen alternierenden Hintergrundfarben wiederherzustellen, genügt der Aufruf von reloadData, das Löschen funktioniert jedoch auch ohne diese Anweisung ohne Probleme.
Um für unsere Anwendung die richtigen alternierenden Hintergrundfarben wiederherzustellen, genügt der Aufruf von reloadData, das Löschen funktioniert jedoch auch ohne diese Anweisung ohne Probleme.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle) editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Zunächst das richtige Objekt entfernen. Country *aCounty = [countryArray objectAtIndex:indexPath.row]; [countryArray removeObject:aCounty]; // Jetzt die Tabellenzelle löschen // Eine Animation gibt es gleich dabei. [tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; // Optional, Tabelle komplett neu aufbauen. [tableView reloadData]; } } |
