2009-07-22 11 views
5

Ich habe eine UITableView und ich möchte die Funktionalität für Benutzer zum Löschen der Zeile, wenn er rutscht oder seinen Finger auf die Zeile flick. Ich kenne den Bearbeitungsstil, der einen kreisförmigen roten Knopf mit -ve-Zeichen darauf bietet. Aber wie man den Flicking-Stil implementiert. Ich sah viele Anwendungen, die es verwenden, also stellt Apple irgendeinen eingebauten Delegierten dafür zur Verfügung oder wir müssen unseren eigenen Steuerpult dafür schreiben.So löschen Sie eine Zeile einer Tabelle in iPhone

+0

Können Sie mir die Methode sagen, die Sie bereits kennen? coz ich möchte das umsetzen. – rptwsthi

Antwort

32

Um die Swipe zu bekommen beeinflussen Sie die Tabellenansicht Delegierten implementieren müssen

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

Verfahren, das zum Löschen Zugriff auf die Swipe-Interaktion bieten. In der Regel stelle ich auch eine Bearbeitungsinteraktion für Tabellenansichten zur Verfügung, bei denen das Löschen möglich ist, da die Interaktion mit den Swipe-Elementen von Benutzern etwas versteckt ist.

Als Beispiel:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView beginUpdates];  
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Do whatever data deletion you need to do... 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; 
    }  
    [tableView endUpdates]; 
} 

Hoffnung, das hilft.

+0

weiß nicht, wie man danke mate .... – WaaleedKhan

+1

withRowAnimation: JA ist falsch, sollten Sie eine enum verwenden, z. withRowAnimation: UITableViewRowAnimationTop – ozba

+0

Überlegen Sie, '... UITableViewRowAnimationTop] zu ändern;' to '... UITableViewRowAnimationAutomatic];'. Dies wurde in einer ungültigen Bearbeitung gemacht (sollte ein Kommentar gewesen sein), also habe ich es rückgängig gemacht. Wenn dies der Fall ist, sollten Sie Ihre Lösung entsprechend aktualisieren. –

2

Ich bin fast sicher, dass es eine Beispielanwendung gibt, die das tut. Eine konkretere Antwort wird bald kommen.

UPDATE: iPhoneCoreDataRecipes gibt wahrscheinlich genau das, was Sie suchen.

Auf Thema, hier ist eine der süßesten bereitgestellt Methoden:

// If I want to delete the next 3 cells after the one you click 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableArray* indexPaths = [NSMutableArray array]; 
    for (int i = indexPath.row + 3; i < indexPath.row + 3; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

    [tableView beginUpdates]; 
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [tableView endUpdates]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

Ich denke, es ist ein einfacher Weg zu erreichen, was Sie wollen, aber dann wieder das ist ziemlich einfach. Die einzige Schwierigkeit könnte sein, sich selbst zu löschen ... achtet nur auf Seg-Fehler.

Verwandte Themen