2009-07-23 10 views
0

Ich habe eine UISegmentedControl, die die Daten in der Tabellenansicht ändert.Refreshing Table View Zeilen

Sagen wir, dass ich 5 Zeilen für Registerkarte eins, 2 Zeilen für Registerkarte zwei anzeigen. Wenn auf die zweite Registerkarte geklickt wird, erhalten die ersten beiden Zeilen neue Werte, aber die alten Daten von Registerkarte 1 für Zeilen 3 bis 5 bleiben erhalten. Wie kann ich sie löschen?

+0

Ich gehe davon aus, dass Sie in Objekt-c auf dem iPhone arbeiten. Fügen Sie diese Tags hinzu. Außerdem, sagen Sie, dass Sie einen UITabViewController mit 1 Tabellenansicht pro Registerkarte haben? Zur besseren Lesbarkeit markieren Sie Ihren Code und drücken Sie dann die Taste für den Code-Code, damit er korrekt angezeigt wird. – TahoeWolverine

Antwort

1

Hier ist ein schneller Beispielcode zu überprüfen: iPhoneCoreDataRecipes

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 + 1; i < indexPath.row + 4; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

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

ich in dieses Problem lief, wenn ich Sie richtig verstehe, dass Das Aktualisieren entfernt keine Zellen. Also entfernen Sie sie einfach und dann Anrufupdate. Viel Glück!

+0

Überprüfen Sie Ihre for-Schleife, es sieht nicht richtig aus. –

+0

@ A-Live Ich merke, dass es einige knifflige Sachen macht; irgendetwas besonderes, das du rufst? – TahoeWolverine

+0

Es tut nichts, der Anfangswert stimmt mit dem Endwert überein. Es sollte auch eine Validierung der Indizes vor oder innerhalb der Schleife geben, um zu verhindern, dass Grenzen überschritten werden. –