Как вы создаете 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:
Примеры проектов на игровой площадке