UITableView внешний вид с ios5 UIAppearance не работает правильно? - PullRequest
5 голосов
/ 19 марта 2012

Я пытаюсь установить фон для ряда 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 на контроллер nav, я просто получаю стандартное табличное представление без изменения фона.

Я знаю, что я мог бы просто изменить фоновые представления в самих tableViewControllers, однако я не хочу, чтобы эти фоны присутствовали при отображении меню в поповере splitViewControllers при повороте на изображение, поэтому я пытаюсь использовать AppearanceWhenContainedIn :

Я также не хочу просто устанавливать внешний вид, когда он содержится в UISplitViewController, так как в 2 случаях у меня есть UITableView, загружаемый в подробный раздел, так что тогда это изменит внешний вид тех, которые я не делаю хочу.

Есть ли другой способ сделать это без внешнего прокси, который все еще позволит мне изменить фон, когда он находится в поповере, или есть способ заставить это работать с прокси, или я просто что-то упустил тупые?

Спасибо

РЕДАКТИРОВАТЬ:

Я только что попытался создать подкласс UINavigationController и попытался использовать [[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView];, который снова работает нормально для главного меню, но не для любого другого UITableView, помещенного в стек, поэтому я действительно озадачен :(

1 Ответ

1 голос
/ 21 марта 2012

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

...