iPhone - UITableView背景图片仅在每个SECOND版本上加载

时间:2010-12-31 06:30:06

标签: iphone objective-c uitableview uiimageview uiimage

这让我完全疯了。

我正在构建一个iPhone应用程序,在我的根视图控制器中,我有一个UITableView。 在viewDidLoad中,我为此表设置了一个背景图像,如下所示:

[self.view setBackgroundColor:[UIColor blackColor]];// this is so that I can see when the table background image does not show up.
UIImageView* backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"whiteBackground.png"]];
[backgroundView setFrame:CGRectMake(0, 0, 320, 460)];
[self.table setBackgroundView:backgroundView];
[backgroundView release];

我的tableCells是透明的(或者自己有背景图片)。

每隔一次 我构建应用程序并在模拟器和实际设备上运行它。 它将显示正常,然后当我再次构建它将只显示黑色背景(但表调用具有他们的背景图像/透明度)。

以前有没有人经历过这样的事情?事实上它每隔一段时间被拾取并显示,这让我觉得内存中潜藏着一些东西。

当我在设备/模拟器上运行它然后正常退出应用程序(双击主页,按住图标并点击关闭)然后再次运行它工作正常。这似乎与我每次构建它时杀死应用程序有关。请注意,我在另一个viewcontroller上使用相同的确切代码并且它每次都有效,但它不适用于此 - 我的根视图控制器。

2 个答案:

答案 0 :(得分:0)

如果您将此代码移至viewWillAppear,您是否也看到相同的内容?

FWIW最好将backgroundView.frame设置为self.table.bounds,而不是将其硬编码到屏幕大小。

答案 1 :(得分:0)

我一直在撞墙去解决这个问题并发现了一些事情(正如我在回答Andrew Ebling的回复中提到的那样)。它不仅仅是背景图片。

我的项目设置如下:

带有XIB的UIViewController 在XIB中删除tableView 将委托和数据源链接到UIViewController 创建名为“table”的IBOutlet UITableView 在IB中链接起来。

这对我来说一直很好。但是有一些奇怪的事情发生在我的'桌子'上,IBOutlet有50%的时间得到认可。我构建它的每个 第二 时间都无法识别,并且只要我调用它就不会运行reloadData。它第一次加载表(意味着数据源是完整的)并且可以选择单元格(意味着委托是正常的)但是忽略了发送到“表”的任何选择器。

这只发生在RootViewController上。不是在我使用这种做事方式的任何后续视图控制器上。

所以我只是将RootViewController的类更改为UITableViewController,相应地更改了XIB(用uitableview替换uiview对象,并将文件的所有者视图属性设置为UItableview)。基本上,当您使用UITableViewController子类和用户界面的XIB指定新文件时,我只是回到了XCode为您提供的内容。

这样我使用self.tableView重新加载而不是我自己的IBOutlet,它工作正常。

我不知道是什么导致这种情况,并且想知道它是否是一个错误。