у меня есть viewController
с двумя containers
; один, в который вставляется пустой viewController
(за исключением некоторого текста), а другой, который встраивает viewController
с данными. Последний встроен в пользовательский navigationController
. Существует также tabBar
, который может перейти к этой container
структуре. Это выглядит так (обратите внимание, что tabBar
здесь нельзя увидеть, поскольку он реализован программно):
Я хотел бы получить доступ к root
viewController
программно, то есть с tableView
. Я пытался:
self.tabBar.window.rootViewController.childViewControllers[2].navigationController.childViewControllers[0]
Но он возвращает ноль. Первая часть: self.tabBar.window.rootViewController.childViewControllers[2].description
возвращает правильный viewController
выбранного tabBar
элемента, так что, я думаю, я на правильном пути.
Я вспомнил, что использую пользовательский navigationController
класс и, возможно, это то, что вызывает проблему здесь. Запись self.navigationController
возвращает ноль. Так что я думаю, что мне нужно получить доступ к пользовательскому. Попробовал так:
MyCustomController *nav = [MyCustomController alloc] init];
и это
UINavigationController *nav = [MyCustomController alloc] init];
Но я не могу использовать это здесь
self.tabBar.window.rootViewController.childViewControllers[2].nav.childViewControllers[0];
, как я получаю ошибку
Свойство 'nav' не найдено для объекта типа '__kindof UIViewController *'
Я на правильном пути? Что я делаю неправильно? Есть ли более простой способ получить доступ к root
viewController
из navigationController
?