29

我有一个静态的 UITableView,一切都在 Storyboard 上。在 cellForRowAtIndexPath 我只是使用

return [super tableView:tableView cellForRowAtIndexPath:indexPath];

并且桌面视图效果很好。但是我想将单元格背景设置为 [UIColor clearColor] 我该怎么做?该表有 30 个单元格,每个单元格都不同。

谢谢

4

3 回答 3

64

我不完全确定这是否可行,因为我从未尝试过使用super它来管理单元格。如果您的代码适用于super,那么您应该能够避免这样做来设置背景颜色:

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

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

于 2012-08-16T19:12:25.603 回答
22

试试这个委托方法:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
 cell.backgroundColor = [UIColor clearColor];
}
于 2012-08-16T19:13:10.533 回答
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
}

您还可以参考此 Apple 开发人员文档静态行内容技术”部分

于 2012-08-16T19:11:10.723 回答