Внешний вид UITableView с ios5 UIAppearance работает неправильно?

Я пытаюсь установить фон для нескольких UITableView, загружаемых внутри UINavigationController. Я использую прокси внешнего вида, добавленный в iOS 5, но он работает не так, как я ожидал.

Приложение использует UISplitViewController, а основным представлением является UINavigationController. Внутри у меня есть подкласс UITableViewController, который называется PBMasterTableViewController. В моем 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, помещенного в стек, так что теперь я действительно в тупике :(


person PaReeOhNos    schedule 19.03.2012    source источник


Ответы (1)


ОК разобрался. Просто делаю это внутри каждого представления и проверяю, что родительский контроллер не является чем-то, чего я не хочу. Спасибо, в любом случае

person PaReeOhNos    schedule 21.03.2012