我正在尝试为在 UINavigationController 中加载的许多 UITableViews 设置背景。我正在使用 iOS 5 中添加的外观代理,但它没有按我的预期工作。
该应用程序使用 UISplitViewController,主视图是 UINavigationController。在这里面,我有一个名为 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 弹出窗口中显示时旋转到肖像时,我不希望这些背景存在,因此我尝试使用外观WhenContainedIn:
我也不想简单地将外观设置为包含在 UISplitViewController 中,因为在 2 个实例中,我有一个 UITableView 被加载到详细信息部分,所以这会改变那些我不想要的外观。
在没有外观代理的情况下是否有另一种方法可以让我在弹出窗口中更改背景,或者有没有一种方法可以使用代理,或者我只是错过了一些愚蠢的东西?
谢谢
编辑 :
我刚刚尝试创建 UINavigationController 的子类并尝试使用[[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView];
它再次对主菜单正常工作,但对于推送到堆栈上的任何其他 UITableView 都没有,所以我现在真的很难过:(