У меня есть приложение с UINavigationController, которое содержит корневой подкласс UIViewController (PagingViewController), который управляет и выступает в качестве делегата для горизонтально подкачки UIScrollView. На каждой странице этого UIScrollView есть вертикально прокручиваемый UITableView, каждый из которых управляется своим собственным подклассом UIViewController (PageViewController). Это выглядит примерно так ...
UINavigationController
PagingViewController (root VC of navigation controller)
PageViewController (instance 1)
PageViewController (instance 2)
PageViewController (instance 3)
HowToPushThisViewController (this is what I'd like to push onto the current root, PagingViewController, from one of its sub view controllers)
Что я хотел бы сделать, так это в didSelectRowAtIndexPath: метод PageViewController (делегат UITableView), вставить новый UIViewController в UINavigationController (поверх PagingViewController).
Проблема в том, что свойство navigationController для PageViewController равно nil, поэтому я не могу его туда вставить. Я предполагаю, что это ноль, потому что это не ПРЯМО в стеке UINavigationController, но содержит в PagingViewController, который равен в стеке. Я попытался установить свойство navigationController для каждого PageViewController перед добавлением его в PagingScrollView, но, похоже, оно доступно только для чтения (как сам UINavigationController устанавливает?).
Мне кажется, что вложенные UIViewControllers - это звуковая архитектура (каждый из них необходим для управления и выполнения функций делегата для своих представлений), и разумно хотеть использовать навигацию с субконтроллера, поэтому я не уверен, что это лучший метод для доступа и нажатия от вложенного контроллера. Надеюсь, есть что-то простое, что я пропускаю, чтобы получить доступ к корневому контроллеру навигации и нажать на него.