Как установить заголовок NavigationController навигационного элемента из ViewController, загруженного Xib - PullRequest
0 голосов
/ 03 июля 2019

У меня есть UIViewController, который загружает его из Xib-файла. В моем AppDelegate.m я хотел бы запустить свой rootViewController с этим myViewController, и я хотел бы, чтобы заголовок navigtionItem был установлен путем взятия представления NavigationBar, которое является частью Xib-файла myViewController:

MyViewController *myViewController = [[MyViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];

Согласно документации

Каждый раз, когда изменяется контроллер представления верхнего уровня, контроллер навигации соответствующим образом обновляет панель навигации.

В моей настройке это, кажется, не происходит, или я не указал, что мое представление NavigationBar на самом деле является панелью навигации.

Как я могу сказать NavigationController обновить его содержимое навигационного элемента (кнопки заголовка, левой и правой панели) в соответствии с представлением NavigationBar, которое является частью файла Xib из myViewController?

Обновление

Мой макет Xib выглядит следующим образом:

Xib layout* * 1030

Я знаю, что могу установить эти элементы в коде:

self.navigationItem.titleView = ...;
self.navigationItem.leftBarButtonItem = ...;

Но я хочу, чтобы они делали дизайн в Xib-файле ViewController, и они должны использоваться в NavigationController.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Добавление представления UINavigationBar к основному UIView не дает того, о чем вы думаете.Он просто добавляет в панель представление панели навигации, он не привязывается к UINavigationController.

Если вы используете раскадровку, вы можете добавить UINavigationItem в качестве дочернего элементаUIViewController.Но поскольку вы не используете раскадровку, самый простой способ сделать это - обновить navigationItem в viewDidLoad.


Sidenote: Apple не рекомендует использовать viewDidLoad для настройки навигациивещь.Если вы действительно хотите сделать это правильно, например, вы можете сделать это в navigationItem getter.

- (UINavigationItem*)navigationItem
{
  // get super navigation item
  UINavigationItem *navItem = [super navigationItem];

  // do stuff 

  return navItem;
}
0 голосов
/ 04 июля 2019

In ViewWillAppear метод в вашем наборе ViewController-

      self.navigationItem.title = @"Title name";

Точно так же вы можете set self.navigationItem.leftBarButton и RightBarButton items

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...