如何动态更改特定UITableViewCell的textLabel或detailTextLabel?动态更新UITableViewCell
基本上,我从互联网下载一组文件,只要用户点击一个单元格。现在,而不是进度指示器,我想显示当前正在下载的文件的名称。我想继续更新detailTextLabel以显示(当前)文件名,直到下载所有文件。
如何动态更改特定UITableViewCell的textLabel或detailTextLabel?动态更新UITableViewCell
基本上,我从互联网下载一组文件,只要用户点击一个单元格。现在,而不是进度指示器,我想显示当前正在下载的文件的名称。我想继续更新detailTextLabel以显示(当前)文件名,直到下载所有文件。
假设你像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";
以防万一任何人仍然有这个问题,我已经成功调用reloadData方法。例如,在我的viewWillAppear中方法的代码,我也行:
[tableSettings reloadData];
哪里tableSettings是我的UITableView的名称。
谢谢Costa! – NSExplorer 2011-01-06 17:49:04