Вот что у меня есть:
Файл MainWindow.xib, настроенный с одним UIViewController (подклассом RootViewController). Этот наконечник загружается при запуске приложения.
RootViewController имеет два ivar, настраиваемый подкласс UIViewController и UINavigationController. Оба они загружаются из перьев.
Когда приложение запускается, оба ivar инициализируются из соответствующих перьев, а затем UIViewController.view добавляется как подпредставление RootViewController.view.
Внутри представления UIViewController у меня есть элемент управления, который запускает анимированную замену UIViewController и UINavigationController. Вот где возникает проблема. Своп анимируется, но представления UINavigationController не отображаются должным образом. Я получаю панель навигации без заголовка и ничего больше.
Наконечник UINavigationController и базовая функциональность были протестированы в отдельном проекте, но не было RootViewController.
Итак, у меня вопрос, могу ли я это сделать? Я успешно поменял местами другие подобные контроллеры представления, но никогда не использовал UINavigationController. Я видел некоторую документацию, которая наводит меня на мысль, что это может быть глупая затея, но я еще не убедился в этом.
Решение (вроде):
Я нашел решение (обходной путь? Взломать?), Но это вызывает еще несколько вопросов. Я отказался от использования пера для UINavigationController. Вместо этого я загрузил свой UINavigationController rootViewController из пера, а затем программно создал UINavigationController с помощью initWithRootViewController :.
NavRootViewController *navRoot = [[NavRootViewController alloc] initWithNibName:@"NavRootViewController" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:navRoot];
[navRoot release];
Это работает, как я и ожидал. Это приводит меня к выводу, что свойство rootViewController UINavigationController не было установлено должным образом, когда я загружал navigationController из Nib. И вопрос, почему? Должен ли он?