У меня есть два разных, но связанных проекта. В родительском проекте A есть раскадровка. Детский проект B, который (теоретически) расширяет функциональность A, должен создать экземпляр основной раскадровки A в AppDelegate. В моей рабочей области xcode я включил родительский элемент A в дочерний проект B в качестве связанного проекта, и я могу видеть все файлы. Я использую следующий код приложения: didFinishLaunchingWithOptions:Загрузка раскадровки из другого проекта Xcode
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
MainViewController *vc = (MainViewController *)[storyboard instantiateInitialViewController];
_window.rootViewController = vc;
[self.window makeKeyAndVisible];
Код не удается во время выполнения на storyboardWithName линии, я предполагаю, потому что iPhone.storyboard не доступен сразу в B, и он не знает, чтобы искать это в пределах A. Фактический файл раскадровки находится в другой папке проекта дочернего проекта проекта B на диске.
Кроме того, я не думаю, вы должны включить суффикс '.storyboard' в имя строки раскадровки. – matt
Расширение действительно может быть проблемой. См. [Документация UIStoryboard] (https://developer.apple.com/library/ios/documentation/uikit/reference/UIStoryboard_Class/Reference/Reference.html#//apple_ref/occ/clm/UIStoryboard/storyboardWithName:bundle :) «Параметры * имя *: имя файла ресурса раскадровки ** без расширения имени файла **.". –
Этот ответ действительно полезен, благодаря матовому. Что касается расширения, я знаю об этой проблеме, я просто добавил, что для целей вопроса, чтобы убедиться, что все поняли, что это файл раскадровки, но похоже, что я просто добавил больше путаницы. –