通过标签访问UITableViewCell子视图?

时间:2014-10-28 14:23:37

标签: ios uitableview

我正在向表格单元格添加UIProgressView,如下所示:

UITableViewCell *cell = [videosTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:(long)videoIndex inSection:0]];
UIProgressView *prg =[[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
prg.tag = (long)videoIndex + 1000;
[cell addSubview:prg];

我稍后(在AppDelegate.m中)尝试使用以下内容访问此进度条:

UITableView *table = (UITableView *)[self.videosTableController.view viewWithTag:8888];
UITableViewCell *cell = [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
UIProgressView *progressBar = (UIProgressView *)[cell viewWithTag:index+1000];
return progressBar; //this always is nil.....

发生了什么事?我已经确认tablecell没有返回nil,但UIProgressView似乎不在单元格中。我已经遍历了单元格的子视图,但看不到进度条。

1 个答案:

答案 0 :(得分:0)

您应该设置prg.tag = (long)videoIndex + 1000;
tableView:cellForRowAtIndexPath:

这是因为[table cellForRowAtIndexPath:]在某些情况下可能会从tableView:cellForRowAtIndexPath:返回新的单元格实例。

因此,你应该在tableView:cellForRowAtIndexPath:内区分你需要的那种细胞(有无进展),创建一个合适的细胞,配置它并返回。