UNavigationController TitleView не отображается из ViewController NavigationItem - PullRequest
5 голосов
/ 25 июля 2011

Всякий раз, когда я добавляю viewController к navigationController, когда он находится в альбомной ориентации, вид заголовка появляется в некоторых видах, но не в других. То есть: у меня есть контроллер навигации, добавьте 3 контроллера вида, первые два показывают название заголовка соответственно, третий не показывает ни одного вообще. Но навигационный контроллер получает вид заголовка из ViewController, как и предполагалось, я записал его значение в консоль, и оно верное, но оно просто не отображается на экране по любой причине. Есть идеи?

О, да, отлично работает в портретной ориентации.

Вот еще одна забавная часть, если я помещаю контроллер представления проблем в навигационный контроллер в альбомной ориентации, там нет titleView, затем без какого-либо взаимодействия с пользователем я поворачиваю устройство обратно в портретное положение и появляется titleView, затем я поворачиваю устройство вернуться к ландшафту, и он остается!

Это похоже на то, что рисунок моего TitleView был заблокирован, хотя я использовал InvokeOnMainThread. Во время этого вызова ничего не выполняется в главном потоке (или где-либо еще).

Вот моя структура:

Window
  TabBarController 
    NavigationController 
      ViewController
    NavigationController
      ViewController

Вот мой порядок действий:

  1. Создать View Controller
  2. Добавление вида заголовка для просмотра контроллера
  3. Push View Controller на NavigationController (InvokeOnMainThread)

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Вы пытались установить заголовок контроллера после нажатия контроллера? Такое поведение происходит со мной, и способ убедиться, что заголовок появляется, - это обязательно установить заголовок navBar в методе viewDidLoad или viewWillAppear следующим образом:

self.navigationController.navigationBar.topItem.title = @"The title";

или

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

Еще одна вещь, которая произошла со мной, это установить leftBarButton или RightBarButton панели навигации без успеха в методе viewDidLoad, но они отображаются правильно при установке кнопок панели в методе viewWillAppear.

Надеюсь, это поможет.

0 голосов
/ 21 сентября 2011

Я думаю, что ваша проблема, возможно, в том, что когда вызывается ваша функция, элемент навигации равен нулю. Поэтому, когда вы вызываете self.navigationITem.title, он ничего не делает. Позже, когда представление поворачивается, навигационный элемент больше не равен нулю, поэтому изменение заголовка работает.

Если вы выполняете код в функции ViewDidLoad, помните, что ViewDidLoad вызывается при первом вызове viewController.view, а не при первом отображении представления. Таким образом, представление может еще не быть в навигационном контроллере.

Например, это может произойти, если вы выполните:

viewController.view.backgroundColor = ... ; 
[navigationController pushViewController:viewController]

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

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