如何访问主从故事板模板中的 tableView?

发布于 2024-12-11 23:56:29 字数 927 浏览 0 评论 0原文

我在 Xcode4 中使用故事板和主从核心数据模板。

我想在主视图控制器上设置我的 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,分隔符和背景图像都可以工作(抱歉,还不能内嵌发布图片):

https://i.sstatic。 net/JaULS.png

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

https://i.sstatic.net/vVKmt.png

我必须做什么设置以便在主tableView上设置背景图像?

I'm using storyboarding and the Master-Detail Core Data template in Xcode4.

I want to set the background image for my tableView on the master view controller.

To do this was simple for the iPhone, I just did this in viewDidLoad of the MasterViewController.m:

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

However, this doesn't work for the iPad; the default background is being shown instead in the master tableView.

I wouldn't think this was a splitViewController issue; from the perspective of the MasterViewController object, he should always have the same tableView, right? In fact, I know this is the case, because this code works on both iPad and iPhone, a line above the "backgroundColor" assignment, and this is using the same "self.tableView" object:

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

This is what it looks like on the iPhone, with both the separator and background image working (sorry, can't post pictures inline yet):

https://i.sstatic.net/JaULS.png

And, using the same code, on the iPad:

https://i.sstatic.net/vVKmt.png

What do I have to set in order to set the background image on the master tableView?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

素罗衫 2024-12-18 23:56:29

您需要在界面生成器中使背景清晰。然后,您需要在 viewDidLoad 中输入 self.tableView.backgroundColor = [UIColorclearColor];。最后,在其后面放置一个具有适当背景颜色的 UIView。由于某种原因,背景内容在 UITableView 本身中被覆盖。

You need to make the background clear in interface builder. Then, you need to say self.tableView.backgroundColor = [UIColor clearColor]; in your viewDidLoad. Finally, put a UIView behind it with the appropriate background color. For some reason, the background stuff is overridden in the UITableView itself.

小矜持 2024-12-18 23:56:29

啊哈!我找到了秘诀:

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 = ...

Aha! I found the secret sauce:

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

The key is using [self.tableView setBackgroundView:...]instead of the property self.tableView.backgroundColor = ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文