Как я могу изменить UINavigationBar UINavigationController? - PullRequest
0 голосов
/ 24 октября 2011

У меня есть UINavigationController, который я создаю программно:

 MessageTableViewController* homeStream = [[MessageTableViewController alloc] initWithNibName:@"MessageTableViewController" bundle:nil];
          homeStream.fetchHomeStream = YES;
          homeStream.title = @"Home";
          UINavigationController* navBarController = [[UINavigationController alloc] initWithRootViewController:homeStream];
          navBarController.tabBarItem.image = [UIImage imageNamed:@"hometab.png"];
          [homeStream release];

У меня есть пользовательский UINavigationBar, который называется STNavigationBar. Как я могу использовать STNavigationBar вместо UINavigationBar по умолчанию, который является частью UINavigationController?

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Я закончил тем, что использовал внешний прокси-сервер iOS5 UIKit:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forBarMetrics:UIBarMetricsDefault];

Никаких подклассов или категорий не требуется.

0 голосов
/ 24 октября 2011

Изменить для будущих читателей, ответ ниже не работает на iOS 5.

Вы не можете просто установить его на существующий экземпляр, потому что UINavigationController имеет свойство readonly для navigationBar .И я не думаю, что вам нужно создавать подклассы UINavigationController.

Я считаю, что лучший способ сделать это - создать категорию, которая расширяет UINavigationBar, как обсуждено здесь .

...