Проблемы с использованием файлов xib в библиотеках

У меня возникли проблемы с работой с библиотеками и включенными xib-файлами. Позвольте мне сначала объяснить мою ситуацию. У меня есть проект, который работает довольно хорошо. Теперь мне нужна часть моего проекта в качестве библиотеки для другого клиента, который хочет использовать некоторые функции в своем приложении. Я создал библиотеку с помощью , которая очень рекомендуемая статья.

Мой клиент должен иметь возможность инициализировать контроллер основного представления следующим образом:

LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController.xib" bundle:foo];

Это наверняка приводит к ошибке, когда я пытаюсь модально представить этот контроллер представления. Я не уверен, какой пакет я должен использовать здесь. Я пробовал что-то вроде

[NSBundle bundleForClass:[SomeClassInTheLibrary class]];

но это не решило проблему.

Я был бы рад, если бы кто-нибудь мог сказать мне, как на самом деле использовать файл xib в такой ситуации.

Спасибо
–f

Обновить

Хорошо, я вижу, что я как-то ошибся. Просто для уточнения: мне нужна библиотека, заголовки и дополнительные ресурсы, верно? Есть ли какая-то передовая практика для создания и доставки «функции» со всеми ее частями, упомянутыми выше?


person flohei    schedule 09.05.2010    source источник


Ответы (2)


Статические библиотеки не могут включать в себя графику, звуки, xib или даже заголовки. Только объектный код. Даже если вы добавили xibs в Copy Bundle Resources, они не станут частью объектного файла. К сожалению, вы не можете использовать динамические библиотеки или фреймворки на iPhone. См. мой ответ здесь для предложение о том, как создать отдельный пакет активов. Вы также можете просто отправить своему клиенту xib-файлы отдельно, но тогда им придется заменить их вручную, если они изменятся в будущем.

person Felixyz    schedule 09.05.2010
comment
Так что, если бы я сделал это таким образом, мне пришлось бы передать моему клиенту библиотеку, заголовки и пакет с файлами xib, верно? - person flohei; 09.05.2010
comment
Да, точно. Так, например, делает Facebook. (Вы можете перейти по ссылке в вопросе, на который я ссылался.) - person Felixyz; 10.05.2010

Попробуйте не добавлять расширение в файл XIB. Так я обычно делаю. Я также не уверен, что XIB должен быть скомпилирован в NIB.

NSBundle *bundle = [NSBundle bundleForClass:[SomeClassInTheLibrary class]];
LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController" bundle:bundle];
person stigi    schedule 09.05.2010
comment
Когда я пытаюсь это сделать, я все еще получаю сообщение об ошибке 2010-05-09 12:18:23.099 test[6416:207] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[UIViewController _loadViewFromNibNamed:bundle :] не удалось загрузить перо с именем LibraryMainViewController. Возможно ли, что я неправильно добавил xib-файл в эту библиотеку? Я добавил его на этапе сборки ресурсов копирования пакетов. - person flohei; 09.05.2010