如何在Master-Detail故事板模板中访问tableView?

时间:2011-10-27 14:13:15

标签: iphone ios ipad xcode4

我在Xcode4中使用故事板和Master-Detail核心数据模板。

我想在主视图控制器上为tableView设置背景图像。

要做到这一点对于iPhone来说很简单,我只是在MasterViewController.m的viewDidLoad中执行此操作:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];

然而,这不适用于iPad;而是在主tableView中显示默认背景。

我不认为这是一个splitViewController问题;从MasterViewController对象的角度来看,他应该总是拥有相同的tableView,对吧?事实上,我知道情况就是这样,因为这个代码适用于iPad和iPhone,在“backgroundColor”赋值之上的一行,这是使用相同的“self.tableView”对象:

self.tableView.separatorColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"separator.png"]];

这就是它在iPhone上的样子,分隔符和背景图像都正常工作(对不起,还不能内嵌图片):

http://i.imgur.com/G7djz.png

并且,在iPad上使用相同的代码:

http://i.imgur.com/8L0ZK.png

我必须设置什么才能在主tableView上设置背景图像?

2 个答案:

答案 0 :(得分:2)

您需要在界面构建器中清除背景。然后,您需要在self.tableView.backgroundColor = [UIColor clearColor];中说viewDidLoad。最后,在背后用适当的背景颜色放置UIView。出于某种原因,在UITableView本身中覆盖了背景内容。

答案 1 :(得分:1)

啊哈!我发现了秘密酱:

UIImage *backgroundImage = [UIImage imageNamed:@"foo.png"];
UIView *backgroundView = [[UIView alloc] init];
[backgroundView setBackgroundColor:[UIColor colorWithPatternImage:backgroundImage]];
[self.tableView setBackgroundView:backgroundView];

关键是使用[self.tableView setBackgroundView:...]而不是属性self.tableView.backgroundColor = ...