Я не мог бы лучше описать свою проблему, так что вы можете себе представить мое разочарование в связи с тем, что ответа еще не было. Для этого я добавлю свое решение:
Учитывая, что вы делаете правильные вещи в вашем applicationDidFinishWithOptions: метод, а не в applicationWillEnterForeground, что-то вроде:
navcontroller = [[UINavigationController alloc] initWithRootViewController: homeViewController];
[окно addSubview: nc.view];
[window makeKeyAndVisible];
не забудьте проверить следующее:
Ваш делегат подключен к соответствующему окну в вашем MainWindow.xib
Вы установили флажок «Видимо при запуске» в конструкторе интерфейса для окна.
В вашей целевой информации (или info.plist) убедитесь, что "Основное имя файла основного пера" равно "MainWindow"
Это тот момент, который меня поразил - если у вас есть два окна в вашем перо в главном окне (у меня была секунда, которую я использую позже для отображения полноэкранного изображения), убедитесь, что вы скрываете его, я задаю его чтобы скрыть его в конструкторе интерфейсов и показать его, когда он вам нужен, я также снял флажок «виден при запуске» для хорошей меры.
С точки зрения поиска в Google я обнаружил, что если вы получаете белый экран, вы, скорее всего, получите сообщение об ошибке «Ожидается, что приложения будут иметь контроллер корневого представления в конце запуска приложения», означающее, что делегат не может найти nib для загрузки, однако, если вы получаете черный экран и ничего в отладчике, тогда он загружает некоторые nib, но не обязательно тот, который вы ожидаете. Мой загружал пустое окно поверх того, что я хотел (тот, с правильным наконечником в нем), (я думаю).
Счастливое исправление ошибки!