2011-01-06 20 views
0

Wie kann man textLabel oder detailTextLabel einer bestimmten UITableViewCell dynamisch ändern?UITableViewCell dynamisch aktualisieren

Grundsätzlich lade ich eine Reihe von Dateien aus dem Internet, wenn der Benutzer auf eine Zelle klopft. Jetzt möchte ich anstelle der Fortschrittsanzeige den Namen der Datei anzeigen, die gerade heruntergeladen wird. Ich möchte updateTextLabel aktualisieren, um die (aktuellen) Dateinamen anzuzeigen, bis alle Dateien heruntergeladen sind.

Antwort

2

Angenommen, Sie bei einem Verfahren wie tableView:didSelectRowAtIndexPath: sind (oder eine andere Art und Weise haben den Index Weg in die Zelle zu erhalten), können Sie etwas tun können:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

UILabel *label = nil; 
for(UIView *subview in cell.contentView.subviews) { 
    if([subview isKindOf:[UILabel class]]) { 
     label = (UILabel*)subview; 
     break; 
    } 
} 

if(label) 
    label.text = @"New text"; 

Dies wird die erste UILabel finden Sie im Handbuch Zelle, und funktioniert möglicherweise nicht, wenn Ihre Zelle mehr als ein Label hat. Ein robusterer Weg ist das Setzen des Tags des Labels beim Erstellen der Zelle (dies kann im Interface Builder oder im Code erfolgen). Dann können Sie das Etikett wie diese finden:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

UILabel *label = nil; 
for(UIView *subview in cell.contentView.subviews) { 
    if([subview isKindOf:[UILabel class]] && [subview tag] == kDetailLabelTag) { 
     label = (UILabel*)subview; 
     break; 
    } 
} 

if(label) 
    label.text = @"New text"; 
+0

Dank Costa !! – NSExplorer

0

Gerade falls noch jemand dieses Problem hat ich hatte Erfolg mit Aufrufen an die reload Methode. Zum Beispiel in meinem Code in der viewWillAppear Methode habe ich die Zeile:

[tableSettings reloadData]; 

Wo tableSettings der Name meines UITableView ist.

Verwandte Themen