Есть что-то фундаментальное, чего я не понимаю в представлении представлений, которые получают свой интерфейс из файла XIB.
Контроллер корневого представления моего приложения - UITabBarController. Один из параметров панели вкладок представляет представление, управляемое UINavigationController. На панели навигации этого представления у меня есть кнопка «плюс» (+) для добавления нового элемента. Я хочу представить представление AddItem как модальное представление, и его интерфейс должен быть взят из файла AddItemView.xib. Этот файл XIB содержит контроллер навигации.
Однако панель навигации не отображается. Вот функция, которая вызывается при нажатии на кнопку «плюс»:
- (void)showNewView:(UIViewController *)viewController
{
AddItemViewController *vc = [[AddItemViewController alloc] initWithNibName:@"AddItemViewController" bundle:nil];
//viewController is the UIViewController on which the plus button was tapped
[viewController.navigationController presentModalViewController:vc animated:NO];
}
Все, что я получаю, это белый экран. Нужно ли что-то делать в viewDidLoad для AddItemViewController? Нужно ли что-то подключать к экземпляру UINavigationController в XIB?
Все это похоже на работу с панелью вкладок, которая находится в файле MainWindow.xib. У UITabBarController есть UINavigationController, который, в свою очередь, имеет подкласс UITableViewController, который, в свою очередь, содержит UITableView, который является исходным содержимым, которое вы видите на экране при нажатии на соответствующую опцию в панели вкладок. Поэтому я не уверен, почему простое вставление этих вещей в IB не приводит к тому же самому.
Как я сказал в начале, я уверен, что эта проблема связана с фундаментальным недоразумением о связи между файлами XIB, их контроллерами представления и контроллерами представления, которые их вызывают. Поэтому, хотя я действительно хочу решить эту конкретную проблему, я бы хотел получить ответ, который поможет устранить это более широкое недоразумение.