2011-01-06 91 views
0

如何动态更改特定UITableViewCell的textLabel或detailTextLabel?动态更新UITableViewCell

基本上,我从互联网下载一组文件,只要用户点击一个单元格。现在,而不是进度指示器,我想显示当前正在下载的文件的名称。我想继续更新detailTextLabel以显示(当前)文件名,直到下载所有文件。

回答

2

假设你像tableView:didSelectRowAtIndexPath:的方法是(或有另一种方式来获得该指数路径细胞),你可以做这样的事情:

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"; 

这会发现在第一的UILabel单元格,并且如果您的单元格有多个标签,则可能无法正常工作。更可靠的方法是在创建单元格时设置标签的标签(这可以在Interface Builder或代码中完成)。然后你可以找到这样的标签:

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

谢谢Costa! – NSExplorer 2011-01-06 17:49:04

0

以防万一任何人仍然有这个问题,我已经成功调用reloadData方法。例如,在我的viewWillAppear中方法的代码,我也行:

[tableSettings reloadData]; 

哪里tableSettings是我的UITableView的名称。