UITableView与静态单元格没有cellForRowAtIndexPath。如何设置清晰的背景?

时间:2012-08-16 19:04:53

标签: ios xcode cocoa-touch uitableview

我有一个静态UITableView,所有内容都放在故事板上。在cellForRowAtIndexPath中,我只需使用

return [super tableView:tableView cellForRowAtIndexPath:indexPath];

并且tableview效果很好。但是我想将单元格背景设置为[UIColor clearColor] 我怎样才能做到这一点?该表有30个单元格,每个单元格不同。

由于

3 个答案:

答案 0 :(得分:62)

我不完全确定这是否有效,因为我从未尝试使用super来管理单元格。如果您的代码与super一起使用,那么您应该可以通过这样做来设置背景颜色:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor clearColor];
    return cell;
}

无论哪种方式,在我看来,这似乎是一种奇怪的做事方式。通常,根据默认的UITableView boiletplate代码,在方法本身中创建和重用单元格,而不调用super

答案 1 :(得分:17)

尝试此委托方法:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
 cell.backgroundColor = [UIColor clearColor];
}

答案 2 :(得分:1)

您可以设置一个方法并在viewDidLoad中调用它以获取所有单元格并随意执行任何操作,您可以使用此方法:

NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows];

获取当前可查看单元格的所有索引路径

然后按以下方式迭代它们

UITableViewCell *cell = nil;
for (int i = 0; i < 30; i++) {
  cell = [self.tableView cellForRowAtIndexPath:[visibleIndexPaths objectAtIndex:i]];
  // Do your setup
}

您还可以参考this Apple developer document部分“静态行内容技术