2016-04-20 37 views
1

Hallo Ich arbeite mit der Chat-App alles funktioniert gut.Jetzt muss ich eine Nachricht löschen.Für, dass ich lange Geste auf tableview.But Mein Tableview ist wie Abschnitte konfiguriert sind Daten und Nachrichten sind Zeilen.Jetzt wenn lange Tippen sie auf Zeile es zeigt Zeilennummer nicht Sections.So respektiere ich unten-Code verwende den currect Index zeigt path.Then ich, dass Nachricht in sqlite.But bin Löschen wie Index immer Fehler Jenseits der AusnahmeWie lösche ich eine bestimmte Zeile?

CGPoint p = [gestureRecognizer locationInView:self.tableView]; 

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p]; 

id<SOMessage> message = self.conversation[indexPath.section][indexPath.row]; 

int index = (int)[[self messages] indexOfObject:message]; 

if (indexPath == nil) { 

    NSLog(@"long press on table view but not on a row"); 

} else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 

     NSLog(@"long press on table view at row %d", index); 
} 

in dem obigen Code ist Index mein indexapth Wert ein row.and zum Löschen, wie ich Zeile in Tableview ist

[self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]] withRowAnimation:UITableViewRowAnimationFade]; 
am Löschen

unten ist mein Fehlerprotokoll

invalid number of rows in section 1. The number of rows contained in an existing section after the update (10) must be equal to the number of rows contained in that section before the update (10), 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).' 
+0

kann helfen, kann nicht wirklich verstehen, was Sie wollen. Es scheint, dass Sie die Datenquelle für das TableView festlegen, so dass Sie die Tabelle entweder neu laden, oder "deleteRowsAtIndexPaths" verwenden, nachdem Sie die Nachricht aus Ihrer Datenquelle entfernen. – zcui93

+0

Ich arbeite mit dem Chat-Bildschirm für den ich benutze einige Messaging-Third-Party-Bibliothek. Ich muss eine Nachricht für das Löschen mit dem obigen Code löschen, um den Indexpfad zu erhalten. Es zeigt nur den aktuellen Index, aber Fehler wie über das Limit hinaus. weil es Abschnittszeilen in Anzahl von Zeilen zurückgibt. so kann ich etwas an indexpath fehlen – Bittoo

+0

Immer noch nicht klar, was das Problem ist. Bitte aktualisieren Sie Ihre Frage mit der Fehlermeldung und dem genauen Code, den Sie versucht haben. – zcui93

Antwort

0

helfen nicht Sie Frage bekommen ... Sie alles richtig machen, wenn Sie in der Lage sind Zeile in SQLite löschen mit Das kannst du dann auch in UITableView. Um Zeile direkt aus der Tabellenansicht löschen Sie einfach in Ihrem Code folgenden hinzu:

else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 

     [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]] withRowAnimation:UITableViewRowAnimationFade]; 

} 

ich wirklich Ihre Frage nicht, sondern hoffen, dass diese :)

Verwandte Themen