Как вы создаете Storyboard из файла на игровой площадке iOS?

Предположим, вы скопировали Main.storyboard из проекта Xcode 6 в автономный каталог ресурсов для игровых площадок. Как создать экземпляр UIStoryboard с помощью файла Main.storyboard? Попытка использовать значение по умолчанию через nil не работает:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

Явным образом использует основной комплект:

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())

Даже если игровая площадка является частью проекта Xcode для раскадровки, я получаю ту же ошибку: "Не удалось найти раскадровку с именем" main "в пакете NSBundle..."

Кажется, что путь пучка верен и должен иметь десериализацию файла раскадровки.

Ответ 1

Я нашел это:

"Вы можете выбросить xib файл в свои ресурсы, но игровая площадка не может его прочитать или запустить, потому что она не в скомпилированной форме. Сегодня я (наконец-то!) подумал об использовании ibtool для предварительной компиляции файла MainMenu.xib а затем загрузите это. Когда вы устанавливаете инструменты командной строки Xcodes, ibtool добавляется в /usr/bin. Таким образом, все, что вам нужно сделать для компиляции вашего nib, выдает следующую команду:

ibtool --compile MainMenu.nib MainMenu.xib

Выбросьте полученный результат в папку ресурсов игровых площадок, и вы готовы загрузить его.

в http://ericasadun.com/2015/03/25/swift-todays-wow-moment-adding-menus-to-playgrounds/

Ваша раскадровка будет скомпилирована в несколько перьев (по одной на сцену)

Надеюсь, что это поможет

Ответ 2

Подобно @ybakos ответ, но для доступа к фреймворку с раскадрой, которую вы хотите загрузить (тогда и игровая площадка, и ваше приложение могут использовать одну и ту же раскадровку):

Если у вас есть раскадровка в структуре, которая была скомпилирована для симулятора, а также встроена в рабочий проект, который, кроме того, живет в рабочей области, вы сможете загрузить фреймворк на игровой площадке в том же рабочем пространстве через рамочный пакет, например:

let frameworkBundle = Bundle(identifier: "com.kigisoft.KGWeatherMap")
let storyboard = UIStoryboard(name: "WeatherMap", bundle: frameworkBundle)

Вы можете загрузить образец проекта "StoryboardPlay" из этой ссылки Dropbox:

Примеры проектов на игровой площадке