我正在尝试为UINavigationController中加载的多个UITableViews设置背景。我使用的是在iOS 5中添加的外观代理,但它的工作方式与我预期的不同。
这个应用程序使用的是一个主视图为UINavigationController的UISplitViewController。在其中,我有一个名为PBMasterTableViewController的UITableViewController子类。在我的AppDelegate中,我有以下内容:
UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease];
[[UITableView appearanceWhenContainedIn:[PBMasterTableViewController_Ipad class], nil] setBackgroundView:bgView];这工作得很好,我在拆分视图中的主菜单有我想要的背景。
在这个主菜单中,当我选择相关行时,会将其他3个UITableViewController子类推送到导航控制器上。但是,我无法使用外观代理来更改这些表的背景。我正在尝试以下操作:
UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease];
[[UITableView appearanceWhenContainedIn:[PBTwitterTableViewController class], nil] setBackgroundView:bgView];这也在前面显示的代码下面的appDelegate中(但是没有重复创建图像视图),但这根本不起作用!当我将PBTwitterTableViewController的一个实例推到导航控制器上时,我只是得到了一个没有背景更改的标准表视图。
我知道我可以简单地更改tableViewControllers本身的背景视图,但是我不希望当菜单在splitViewControllers弹出窗口中显示时,当菜单旋转到竖屏时,这些背景不在那里,因此我尝试使用appearanceWhenContainedIn:
我也不想简单地将外观设置为包含在UISplitViewController中时的外观,因为在两个实例中,我有一个UITableView被加载到细节部分,所以这将更改我不想要的外观。
有没有其他方法可以在没有外观代理的情况下,让我在弹出窗口中更改背景,或者有什么方法可以让代理工作,或者我只是错过了一些愚蠢的东西?
谢谢
编辑:
我刚刚尝试创建UINavigationController的一个子类,并尝试使用[[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView];,它在主菜单上仍然可以正常工作,但对于推送到堆栈上的任何其他UITableView则不行,所以我现在真的被难住了:(
发布于 2012-03-22 00:29:12
好了,把它整理好了。只是在每个视图中这样做,并检查父控制器不是我不想要的东西。不管怎样,谢谢你
https://stackoverflow.com/questions/9774838
复制相似问题