我有一个静态UITableView,所有内容都放在故事板上。在cellForRowAtIndexPath中,我只需使用
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
并且tableview效果很好。但是我想将单元格背景设置为[UIColor clearColor] 我怎样才能做到这一点?该表有30个单元格,每个单元格不同。
由于
答案 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部分“静态行内容技术”