Frage

NSIndexPath* updatedPath = [NSIndexPath indexPathForRow: 0 inSection: 0]; 
NSIndexPath* updatedPath2 = [NSIndexPath indexPathForRow: 1 inSection: 0]; 
NSArray* updatedPaths = [NSArray arrayWithObjects:updatedPath, updatedPath2, nil]; 
[self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];

Der obige Code funktioniert und es beseelt. Das Problem ist, dass ich viele Daten haben, und ich will nicht zu hart Code die Zeilenindizes. Da ich nur einen Abschnitt in meinem Tabellenabschnitt haben kann 0 sein Wie kann ich dynamisch NSArray von NSIndexPath Objekten erzeugen?

Oder gibt es einen einfacheren Weg, die Tabellen-Ansicht zu animieren. Alle Zeilen in meinem Tisch Ansicht ändern, wenn der Benutzer auf die Registerkarte oben auf die Tabellenansicht klickt.

War es hilfreich?

Lösung

das Array von Indexpfade zu erzeugen, man konnte nur Schleife:

    NSMutableArray *updatedPaths = [NSMutableArray array];
    for (NSNumber *row in someArray) {
        NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:[row intValue] inSection:0];
        [updatedPaths addObject:updatedPath];
    }
    [self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];

Wenn Sie alle Daten in Ihrem Tableview neu zu laden, warum nicht nur die reload Methode aufrufen?

Andere Tipps

Wenn Sie einen ganzen Abschnitt aktualisieren:

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop];

Wenn Sie mehr als ein indexPathForRow mit gleichem Zeilenindex haben, erhalten Sie diese Ausnahme.

Für erample

[segmentTable reloadRowsAtIndexPaths: [[NSArray alloc] initWithObjects: 
                                [NSIndexPath indexPathForRow: 1 inSection: 1], 
                                [NSIndexPath indexPathForRow: 1 inSection: 1], nil]                                 withRowAnimation:UITableViewRowAnimationNone];

Ich habe es endlich funktioniert. Hier ist der Code:

NSMutableArray *indexPaths = [[[NSMutableArray alloc] init] autorelease];
for (int i = 0; i < [mySexyList count]; i++) {
   NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:i inSection:0];
   [indexPaths addObject:updatedPath];
}

[self.myFunkyTableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];

Das Problem war, dass ich hart codierten Wert von numberOfRowsInSection zurückkehrt: Methode, die nicht die gleichen wie mySexyList Größe war. Dies wurde Absturz der App.

self.arTableData Angenommen ist ein veränderliches Array von Tabelle & tableView wird eine Instanz von UITableView. Angenommen, es sind 10 Reihen (die Objekte 10 in Array-Einrichtung) in tableView. Ich folgenden Code implementieren entfernen Zeilen animiert.

int i; // to remove from 3 to 6
for(i=2;i<6;i++)
{
    [self.arTableData removeObjectAtIndex:i];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:0]] withRowAnimation:UITableViewRowAnimationRight];
}

Das Trick funktioniert bei mir ohne Probleme. Hoffe, dass es für Sie gleiche Arbeit. Viel Glück.

Nur meine Lösung in die Mischung hinzufügen, da es einfach war, wenn ich es gefunden. Was passiert war, dass ich eine Tabelle, die auf die gleiche Technik gefunden „gruppiert“ durch meinen eigenen Code: cocoanetics.com

Wenn der Benutzer etwas tut, dass ein Update erforderlich, um eine Zelle, und der Tisch gruppiert war zu diesem Zeitpunkt nicht, mein Code versucht zu verwenden

[[self tableView] reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];

Wege sowohl für die Zelle und den nicht vorhandenen Headers. Dies verursacht die gleichen Fehler haben andere oben berichtet. Alles, was ich tun musste, war sicher, dass die „Pfade“ zu reloadRowsAtIndexPaths bereitgestellt: withRowAnimation: existierte tatsächlich. Als das geschehen ist, war alles in Ordnung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top