Мое приложение помещается внутри UINavigationController
.
Просто я настроил MyUIViewController
как rootViewController
из navigationController
, а затем настроил customTitleView
для navigationItem
из myViewController
внутри viewDidLoad
.
Теперь, когда я нажимаю newViewController
, я ожидаю увидеть предыдущий customTitleView
(как описано в справке Apple NavigationController), но это не так.
Что не так?
Небольшая часть кода ниже и справочник Apple UINavigationController
"Если новый контроллер представления верхнего уровня имеет настраиваемое представление заголовка, панель навигации отображает это представление вместо представления заголовка по умолчанию. Чтобы указать настраиваемое представление заголовка, установите свойство titleView элемента навигации контроллера представления. «
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationItem setTitleView:customTitleView];
}
Может быть, «вид заголовка по умолчанию» означает «ничего»? Я интерпретировал это как предыдущий titleView.
EDIT
Я пытаюсь обойти, но у меня есть некоторые другие проблемы.
Обходной путь:
В каждом ViewController, который я вставляю в NavigationController, я настраиваю в viewDid, загружаем titleView, получая его от rootViewController
UiView *originalContainer = [[[self.navigationController.viewControllers objectAtIndex:0] navigationItem] titleView]
Я создаю newTitleView и помещаю его в originalContainer.subviews (UIButton), потому что мне нужно от него действие Target.
Все отлично работает для первого выдвинутого контроллера, но если я помещаю в стек другой viewController (второй выдвинутый), я теряю все ссылки на navigationController. Все переменные экземпляра равны нулю.
Эти значения получены внутри viewDidLoad
firstViewControllerPush.navigationController = (UINavigationController *) 0x6693da0
firstViewControllerPush.parentViewController = (UINavigationController *) 0x6693da0
secondViewControllerPushFromFirstViewControllerPressed.navigationController = 0x0
secondViewControllerPushFromFirstViewControllerPush.parentViewController = 0x0
Похоже, что второй ViewControllerPressed нигде не живет !!
Как это возможно?
Я дважды проверил, правильно ли я нажимаю viewController вместо того, чтобы представлять его модально
Из-за этой проблемы я не могу правильно настроить newTitleView для secondViewControllerPressed.