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