Как установить пользовательскую панель навигации (title + titleView) для всех контроллеров навигации и контроллера просмотра? - PullRequest
3 голосов
/ 21 октября 2011

У меня есть приложение с вкладками с контроллерами навигации во вкладках и просмотр контроллера в них.Все они используют одну и ту же панель навигации контроллера навигации: кнопка возврата + изображение логотипа.В настоящее время я размещаю этот код в каждом контроллере представления:

- (void)viewDidLoad
{
  [super viewDidLoad];
  self.navigationItem.title = @"Back";
  UIImage *headerImage = [UIImage imageNamed:@"Logo.png"];
  self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:headerImage] autorelease];
}

ИМХО, это не лучший способ сделать это.Я думаю об использовании категории для UIViewController и переопределении метода viewDidLoad, но каждый контроллер представления имеет некоторый дополнительный код для выполнения в viewDidLoad, поэтому я думаю, что переопределение не является решением.Каковы другие способы?

1 Ответ

8 голосов
/ 21 октября 2011

Вы можете создать подкласс UIViewController, MyViewControllerWithBackButtonAndLogo (можно придумать более подходящее имя), а затем реализовать viewDidLoad для настройки элемента навигации.Сделайте все ваши контроллеры представления наследовать от этого базового класса.Затем просто убедитесь, что контроллеры представления вызывают [super viewDidLoad] в своих собственных реализациях.

Также обратите внимание, что для установки заголовка кнопки "Назад" не следует изменять свойство title элемента навигации, а устанавливать соответствующее backBarButtonItem.

...