Objective C - iOS,在屏幕外的静态表格单元格内迭代UILabel

时间:2012-04-22 21:34:59

标签: objective-c ios uitableview uilabel

我有一个由静态单元格组成的UITableView,每个单元格都包含一个UILabel,当屏幕加载时,该UILabel会填充字段数据。在一个屏幕上有更多单元格可以放入,因此表格视图会滚动。 UILabel在设计时隐藏,我想在设置了所有文本属性后将它们设置为可见。我一直在使用tableView的subviews属性来迭代标签到setHidden:NO但这只影响当前在视图中的单元格内的标签。我怎样才能遍历所有UILabel而不管哪些是在视图中?

由于 乔纳森

2 个答案:

答案 0 :(得分:1)

您可以在tableView:cellForRowAtIndexPath:方法中解决此问题。

假设您已经实现了静态单元格the way Apple's guide suggests,那么tableView:cellForRowAtIndexPath:应该看起来像一系列if-then-else语句,返回通过IBOutlet个对象提供的单元格:

if (indexPath.row == 0) {
    return cell1;
} else if (indexPath.row == 1) {
    return cell2;
} // .. and so on

修改此代码,如下所示:

UITableViewCell *res = nil;
if (indexPath.row == 0) {
    res = cell1;
} else if (indexPath.row == 1) {
    res = cell2;
} // .. and so on
// Call your custom code that makes the label visible
if (allTextPropertiesHaveBeenLoaded) {
    [res setMyLabelVisible];
}
return res;

如果已设置所有文字属性,请致电reloadData以强制所有单元格通过tableView:cellForRowAtIndexPath:并重新配置。

答案 1 :(得分:1)

只需调用cellForRowAtIndexPath:方法

for(NSUInteger i = 0; i < numberOfCells; i++) {
UITableView* cell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:i  inSection:0];
}