如何设置tableView的背景颜色

时间:2010-05-12 19:34:49

标签: iphone xcode uitableview uiviewcontroller

我一直尝试过,但无法成功设置TableView的backgroundColor。 当父视图控制器为tableView.backgroundColor时,将cell.backgroundColor和/或clearColor设置为UIViewContoller不起作用。

我的nib文件结构是

FileOwner
View
UITableView

(注意:我将TableView设置为groupsTable部分)

首次尝试,我在代码UIView

中创建了viewDidLoad
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 300)] autorelease;
[view setBackgroundColor:UIColor blueColor]; // color it just to see if it is created at the right place
[self.tableView sendSubViewToBack:view];

它有效,但它隐藏了细胞的内容。我能够看到标题的内容,但不能看到单元格内容。 (但是当我改变视图的坐标(0,150,160,300)时,我能够看到单元格的内容,但随后它松开了tableview的backgroundColor。

第二次尝试, 我创建了imageView

View
ImageView
UITableView

并设置self.tableView.backgroundColor = [UIColor clearColor];但不起作用。

我用谷歌搜索,但没有和平的答案。

4 个答案:

答案 0 :(得分:5)

具有分组样式的UITableView使用背景视图。要删除背景视图并显示背景颜色,请尝试以下任一操作:

tableView.backgroundView = nil;
tableView.backgroundView = [[[UIView alloc] init] autorelease];

之后,您应该能够正常设置背景颜色:

tableView.backgroundColor = [UIColor redColor];

顺便说一句,只有一个视图可以是另一个视图的父/超视图,而视图控制器不是视图。

答案 1 :(得分:3)

这一直对我有用:

UITableView *tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];
tableView.backgroundColor = [UIColor redColor];
[parentView addSubview:tableView];

确保tableView不是nil,不是隐藏的,具有正确的框架,并且已经添加到正确的父视图中。

答案 2 :(得分:2)

Swift版

    let backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: self.tableView.bounds.size.height))
    backgroundView.backgroundColor = UIColor.redColor()
    self.tableView.backgroundView = backgroundView

答案 3 :(得分:0)

UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height)];
[backgroundView setBackgroundColor:[UIColor redColor]];
[self.tableView setBackgroundView:backgroundView];