2013-11-17 5 views
2

Я создал файл пакета и импортировал файл пакета в свой проект. В этом файле пакета есть раскадровка, и я хотел бы создать представление из этой раскадровки. Я пытался найти правильный способ сделать это в течение 2 дней, но не повезло. Он всегда показывает «Не удалось найти раскадровку с именем« StoryboardA »в пакете NSBundle». У меня есть пример проекта здесь: https://github.com/tsunglintsai/Storyboard-In-Resource-Bundle.Использование раскадровки из файла Bundle ресурсов

Ниже приведен код, который я пробовал.

NSBundle *resourceBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"bundlefilename" ofType:@"bundle"]]; 
[resourceBundle load]; 
NSLog(@"resourceBundle:%@",resourceBundle); 

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"StoryboardA" bundle:resourceBundle]; 
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; 
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentViewController:vc animated:YES completion:NULL]; 

- я не могу найти ответ из следующих подобных сообщений вопрос:

How to load storyboard file from custom bundle in IOS app?

Xcode Copy Bundle Resources can't find files

"Could not find a storyboard named 'MainStoryboard' in bundle NSBundle"

+0

Что вы видите, когда вы выходите из 'resourceBundle'? Также, пожалуйста, сообщите точную ошибку, которую вы получаете. –

ответ

-1

Если вы используете loadAndReturnError: вместо просто load, вы получаете эту ошибку возраст: «не может быть загружен, потому что его исполняемым не может быть найден„

Ошибка домена = NSCocoaErrorDomain Code = 4“Расслоение » bundlefilename.bundle UserInfo = 0xb8c8720 {NSLocalizedRecoverySuggestion = Попробуйте переустановить пакет., NSLocalizedFailureReason = исполняемый сверток не удалось., NSLocalizedDescription = Расслоение «bundlefilename.bundle» не может быть загружен , потому что его исполнение не может быть расположен ., NSBundlePath Поддержка =/Users/user1/Library/Application/iPhone Simulator/7.0.3/Применения/2952FC15-F092-4F04-9BD3-902A923BC692/StoryboardInBundle.app/bundlefilename.bundle}

Так похоже, что что-то не так с вашим пакетом (хотя у меня нет опыта загрузки пакетов).

Если ваш объект использует раскадровку и изображение, содержащиеся в этом комплекте, вы можете открыть комплект в поисковом устройстве, нажать «показать содержимое пакета» и перетащить эти два файла в свой проект. Тогда вам не нужно загружать пакет, и его можно удалить из проекта.

5

Вам необходимо создать правильный набор, а не просто переименовать каталог с расширением .bundle.

Ваши ресурсы, такие как раскадровка, должны находиться в подкаталоге Contents/Resources/, а вам нужен Info.plist в каталоге Contents/.

Вы можете создать базовый шаблон, создав новую цель и выбрать Bundle из OS X> Framework & Library. Затем архивируйте его и посмотрите в архив.

Возможно, существует более оптимизированный способ сделать это с целевыми зависимостями, но для меня не было очевидным, как сделать Xcode сборкой с нормальной командой сборки, она работает только с архивированием.

Для получения дополнительной информации см. Loadable Bundles в Руководстве по программированию Apple's Bundle.

+0

Привет, Джим, большое спасибо за ответ. Он работает после того, как я последую вашему предложению. Я обновил проект git hub, поэтому, если у кого-то есть такая же проблема, может быть место для ссылки. –

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