2009-08-10 7 views
0

Okidoke. Hier ist mein Problem: Ich habe eine Reihe von komplexen UITableViewCells eingerichtet, um Geschichten aus einem Newsfeed anzuzeigen (Gähnen). Was ich möchte, ist, dass sich das Hintergrundbild und die Höhe der Zelle bei der Auswahl ändern (als Mittel, um zu markieren, dass die Geschichte gelesen wurde).Nachladen von UITableViewCell bei Auswahl

Nun, vor dem Einrichten der Dequeueing, konnte ich dies mit einem einfachen [self.tableView reloadData] tun. Das scheint bei ausgeschiedenen Zellen nicht in Ordnung zu sein; Beim Neuladen der Tabellenansicht werden die Zellen nicht neu gezeichnet, damit sie dem geänderten Status entsprechen.

Ich habe versucht, reloadRowsAtIndex- und während dies funktioniert - schön - für die erste Zelle klickt ein Benutzer auf, es geht nach diesem Punkt wackelig: manchmal die Zelle neu geladen, manchmal nicht korrekt.

Offensichtlich ist jede Geschichte ein NSMutableDictionary-Objekt. Ich verwende ein NSNumber-Objekt, um zu verfolgen, ob eine Story gelesen wurde oder nicht.

Ich würde den Code veröffentlichen, und ich werde, wenn jemand fragt, aber ich bin auf der Suche nach einer generischen Lösung, die in jedem UITableViewController (teilen Sie die Liebe) implementiert werden könnte.

Also, einfach gesagt: Wie zeichnet man komplexe Zellen bei der Selektion zuverlässig neu?

Antwort

0

Versuchen Sie, jede Zelle eine eindeutige ID, um zu geben für Ausreihen zu arbeiten, sollten Sie Ihre Zellen mit ihren veränderten Zuständen zurückkommen, wenn Sie eine eindeutige ID für jede Zelle zu verwenden, so 20 Zellen = 20 ids, hoffe, das hilft

0

Angenommen, der Index Pfad haben, können Sie die Zelle zugreifen und manipulieren, um sie direkt:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // handle the selection... 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath]; 
    if (nil != cell) { 
    // 
    // now update the cell to reflect the new state 
    // 
    } 
} 
+0

Danke, Daniel und dmercredi - beide. Ich habe an jeder Stelle in meiner App einen Platz für jede Ihrer Lösungen gefunden. – nzeltzer

Verwandte Themen