我有一个UItableView(分组样式)。我想自定义它,使它看起来像一个“粘贴它”或一个带有黄色背景界面的“发布它”。
因此添加了以下代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UIView *backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backgroundView.backgroundColor = [UIColor yellowColor];
cell.backgroundView = backgroundView;
cell.textLabel.backgroundColor=[UIColor yellowColor];
}
这确实奏效了。我能够实现黄色背景,但缺少分隔线。 some1可以帮助我吗?
这是最好的方法吗?或者我应该为单元格创建一个图像并将其用作backgroundView?
答案 0 :(得分:6)
实际上,上述答案都没有(我相信)是正确的。根据doco:
注意:如果要更改单元格的背景颜色(通过UIView声明的backgroundColor属性设置单元格的背景颜色),必须在{{1}中执行此操作委托的方法而不是数据源的
tableView:willDisplayCell:forRowAtIndexPath:
。组样式表视图中单元格背景颜色的更改在iOS 3.0中具有与以前版本的操作系统不同的效果。它现在影响圆角矩形内的区域而不是它外面的区域。
所以,不要在tableView:cellForRowAtIndexPath:
中致电setBackgroundColor
,而应该在tableView:cellForRowAtIndexPath:
中这样做:
tableView:willDisplayCell:forRowAtIndexPath:
我发现这个作品非常完美,并且适合其他表格单元格渲染的工作方式。无需添加任何背景视图或任何其他视图。
答案 1 :(得分:2)
我真的很惊讶能够设置背景颜色。设置UITableViewCell背景的正确方法是:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor yellowColor];
}
另外,我注意到你的cellForRowAtIndexPath方法中没有任何重用代码。我希望你没有粘贴它,但这是一个很大的禁忌。 Table View Programming Guide
答案 2 :(得分:0)
这是否适合您放入“cellForRowAtIndexPath”?
....................
if (cell == nil) {
....................
cell.backgroundColor = [UIColor yellowColor];
....................
tableView.backgroundColor=[UIColor clearColor];
}
答案 3 :(得分:0)
将tableview的separatorStyle设置为UITableViewCellSeparatorStyleSingleLine。
应该是下面的内容。
myTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
答案 4 :(得分:0)
过时。
为什么要创建自定义背景视图?如果您只想获得黄色,可以使用UIColor colorWithRed: green: blue: alpha:
创建自己的颜色来自定义颜色,然后将其添加到cell setBackgroundColor:UIColor
。如果在分组表视图中添加背景视图,似乎完全覆盖了分隔符。如果你仍然希望自定义UIView作为背景,我建议添加一个看起来像你的分隔符的自定义tableViewCell。您可以在cellForRowAtIndexPath
。
我的第一个建议的工作代码:
[cell setBackgroundColor:[UIColor yellowColor]];