我有一个静态的 UITableView,一切都在 Storyboard 上。在 cellForRowAtIndexPath 我只是使用
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
并且桌面视图效果很好。但是我想将单元格背景设置为 [UIColor clearColor] 我该怎么做?该表有 30 个单元格,每个单元格都不同。
谢谢
我有一个静态的 UITableView,一切都在 Storyboard 上。在 cellForRowAtIndexPath 我只是使用
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
并且桌面视图效果很好。但是我想将单元格背景设置为 [UIColor clearColor] 我该怎么做?该表有 30 个单元格,每个单元格都不同。
谢谢
我不完全确定这是否可行,因为我从未尝试过使用super
它来管理单元格。如果您的代码适用于super
,那么您应该能够避免这样做来设置背景颜色:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor clearColor];
return cell;
}
无论哪种方式,在我看来,这都是一种奇怪的做事方式。UITableView
通常,根据默认的样板代码,在方法本身中创建和重用单元格,而无需调用super
.
试试这个委托方法:
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
}
您可以设置一个方法并在 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 开发人员文档“静态行内容技术”部分