UITableView外观与ios5 UIAppearance无法正常工作?

时间:2012-03-19 17:24:11

标签: ios5 uinavigationcontroller uitableview uiappearance

我正在尝试为UINavigationController中加载的许多UITableView设置背景。我正在使用在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本身的背景视图,但是当旋转到portait时,当splitViewControllers popover中显示菜单时,我不希望这些背景存在,因此我尝试使用appearanceWhenContainedIn :

我也不想简单地将外观设置为包含在UISplitViewController中,因为在2个实例中我将UITableView加载到详细信息部分,因此这将改变那些我不会的内容想。

有没有另外一种方法可以在没有外观代理的情况下执行此操作,这仍然允许我更改弹出框中的背景,或者是否有一种方法可以使代理使用,或者我只是遗漏了某些东西傻?

由于

编辑:

我刚刚尝试创建UINavigationController的子类并尝试使用[[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView];,它再次适用于主菜单,但不能用于任何其他UITableView推入堆栈,所以我现在真的很难过:(

1 个答案:

答案 0 :(得分:1)

确定排序了。只是在每个视图中执行它并检查父控制器不是我不想要的东西。不管怎样,谢谢