2015-02-11 2 views
3

У меня очень простое приложение с одним представлением, которое мне нужно преобразовать в библиотеку.Могу ли я приложить раскадровку к статической библиотеке

Я верю, что я ухожу к правильному началу перехода к моим настройкам проекта, а затем добавлению Static Library Cocoa Touch. После этого я переместил файлы ViewController.h, ViewController.m и Main.storyboard в новый каталог библиотеки.

Затем я перешел в настройки моего приложения и добавил свою новую библиотеку в «Link Binary With Libraries». Затем под общей вкладкой я установил интерфейс Main на ничего, так как я переместил раскадровку в новый каталог библиотеки.

Затем я пошел в настройки моего проекта библиотеки и добавил Main.storyboard в файлы копирования. Наконец, я удалил два файла по умолчанию .h и .m, которые были созданы, когда я добавил библиотеку, а затем добавил файл ViewController.m в библиотеки Compile sources.

Приложение загружает пустой экран и дает предупреждения, потому что не может получить доступ к каким-либо входам на раскадровке. Как получить библиотеку для загрузки раскадровки или это просто совершенно неправильно?

+0

Я просто указал на это руководство, похоже, что это может помочь. http://www.galloway.me.uk/tutorials/ios-library-with-resources/, поэтому я сейчас переживаю это. – Cvongrim

ответ

3

Вам необходимо убедиться, что приложение (а не библиотека) копирует раскадровку.

Возможно, вы создали для своих ресурсов resource bundle (zipped-файл, который заканчивается на .bundle).

Существует хак, который вы можете попробовать, если хотите действительно перейти к одному файлу, Embedded Frameworks.

Хотя фреймворки являются улучшением по сравнению с библиотеками, Xcode игнорирует любые ресурсы, содержащиеся в рамках фреймворка. Поэтому, если в вашей структуре есть xib, изображения, звуки или другие файлы, Xcode их не увидит. Встроенная инфраструктура - это способ обмануть Xcode для просмотра включенных ресурсов.

Вы можете увидеть структуру here.

KFData.embeddedframework 
├── KFData.framework 
│ ├── Headers -> Versions/Current/Headers 
│ ├── KFData -> Versions/Current/KFData 
│ ├── Resources -> Versions/Current/Resources 
│ └── Versions 
│  ├── A 
│  │ ├── Headers 
│  │ │ ├── .. 
│  │ ├── KFData 
│  │ └── Resources 
│  │  ├── ACKNOWLEDGEMENTS 
│  │  ├── Info.plist 
│  │  ├── LICENSE 
│  │  ├── KFData.bundle 
│  │  │ ├── .. 
│  │  ├── KFData.xcconfig 
│  │  └── VERSION 
│  └── Current -> A 
└── Resources 
    ├── KFData-Acknowledgements -> ../KFData.framework/Resources/ACKNOWLEDGEMENTS 
    ├── KFData-License -> ../KFData.framework/Resources/LICENSE 
    ├── KFData-Version -> ../KFData.framework/Resources/VERSION 
    ├── KFData.bundle -> ../KFData.framework/Resources/KFData.bundle 
    └── KFData.xcconfig -> ../KFData.framework/Resources/KFData.xcconfig 
+0

Что касается связанного с «hack» - этот ответ мне немного помог, но мне пришлось [добавить PR] (https://github.com/kstenerud/iOS-Universal-Framework/pull/218) в связанное репо с работа с раскадными версиями на Xcode 7.3.1 - размещение здесь, так как проект больше не поддерживается, но все еще работает для меня (с моим исправлением). – manroe

Смежные вопросы