Мое приложение требует использования instanceiateViewControllerWithIdentifier - почему?

Я добавил файл раскадровки в приложение, в котором изначально его не было. По какой-то причине я не мог заставить свой собственный UIViewController отображаться правильно, пока не добавил это в didFinishLaunchingWithOptions:

ActivityViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"ActivityViewController"];

Почему мне нужно принудительно использовать мою раскадровку таким образом? Шаблонные проекты iOS (Single View, Master-Detail и т.д.) в этом не нуждаются.

Контрольный список:

  • Сводка проекта Xcode → Основная раскадровка правильно установлена ​​​​на «MainStoryboard».
  • Построитель интерфейса → Инспектор удостоверений → Класс правильно установлен на «ActivityViewController».
  • Интерфейсный конструктор → Инспектор удостоверений → Идентификатор раскадровки также установлен на «ActivityViewController», но это только потому, что он нужен instantiateViewControllerWithIdentifier.

person Tom Söderlund    schedule 17.05.2013    source источник
comment
У контроллера есть стрелка, указывающая на него слева?   -  person rdelmar    schedule 18.05.2013
comment
Да, и щелчок по нему открывает ActivityViewController.h, как и ожидалось.   -  person Tom Söderlund    schedule 18.05.2013
comment
Базовое имя основного файла раскадровки установлено на MainStoryboard в info.plist?   -  person rdelmar    schedule 18.05.2013
comment
да. Я думаю, что именно это свойство устанавливает Xcode Project Summary→Main Storyboard.   -  person Tom Söderlund    schedule 18.05.2013
comment
Это второй вопрос, который вы задали, где, кажется, что-то странное с вашей раскадровкой. Интересно, что-то не так с вашим Xcode.   -  person rdelmar    schedule 18.05.2013
comment
@TomSöderlund Не могли бы вы показать несколько снимков экрана? Покажите раскадровку, чтобы мы могли увидеть ее имя и параметр Is Initial View Controller. Покажите info.plist, чтобы мы могли видеть, что основная раскадровка настроена правильно.   -  person matt    schedule 18.05.2013


Ответы (1)


Вам не нужно вызывать instanceiateViewControllerWithIdentifier, если вы установили Is Initial View Controller в свой «ActivityViewController» в раскадровке. Начальный контроллер представления будет иметь стрелку, указывающую на него.

введите здесь описание изображения

person GayleDDS    schedule 17.05.2013