iOS — привязка раскадровки фреймворка к ViewController для использования в основном проекте

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

Мне удалось, используя пакет, передать раскадровку в основной проект, и я вижу это, когда создаю приложение. Однако добавленный ViewController, также находящийся внутри фреймворка, не связывается во время выполнения. Все классы фреймворка импортируются в основной проект.

В сообщении об ошибке говорится, что не удается найти контроллер представления.

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

Кто-нибудь сталкивался с этим раньше? Буду очень признателен за предложения по исправлению!!

Спасибо, Крис


person c_m_conlan    schedule 13.11.2013    source источник
comment
ничего себе, я как раз собирался задать аналогичный вопрос, я немного застрял в том, как заставить приложение видеть раскадровку во фреймворке. ваш пакет находится внутри фреймворка или снаружи (он же является частью .a каким-то образом?), моя раскадровка когда-либо используется только внутри самого фреймворка (хорошо, пытаясь сделать это таким образом)   -  person Fonix    schedule 13.11.2013
comment
Мой бандл находится вне фреймворка, как бы отдельно от файла .a. Однако он содержит раскадровку, которая находится внутри фреймворка, и у них есть взаимозависимости.   -  person c_m_conlan    schedule 13.11.2013
comment
Как вы понимаете, что раскадровка используется только с фреймворком? Похоже, это может быть рабочим решением для моей проблемы....   -  person c_m_conlan    schedule 13.11.2013
comment
в моем приложении есть своего рода почтовый ящик для подключаемых модулей, который будет использоваться в других приложениях, в основном вы вызываете функцию, и появляется контроллер представления (который будет исходить из раскадровки в фреймворке), у конечного разработчика не будет доступа к фреймворкам раскадровка или что-то еще, просто вызов этой функции должен перейти в новое окно, ну, это то, чего я надеюсь достичь, я уверен, что facebooks sdk делает что-то подобное   -  person Fonix    schedule 13.11.2013
comment
на самом деле, просто просматривая пакеты ресурсов facebooks sdk, они содержат только изображения, никаких раскадровок xib r... поэтому мне интересно, использовали ли они что-то подобное в своих фреймворках.   -  person Fonix    schedule 13.11.2013
comment
также я сейчас нахожусь на этапе с моими пакетами, где у меня сейчас именно ваша проблема, не могу найти связанный контроллер просмотра   -  person Fonix    schedule 13.11.2013
comment
удалось заставить его работать! проверить мой ответ   -  person Fonix    schedule 13.11.2013


Ответы (1)


Чтобы найти связанный контроллер представления, все, что вам нужно, это -all_load -ObjC в ваших приложениях Другие флаги компоновщика в настройках сборки.

кажется, что компоновщик пропускает файлы, необходимые из-за того, что код приложения на самом деле не использует или не ссылается на ViewController, поэтому компоновщик просто пропускает его. Это заставляет его использовать ViewController при компоновке сейчас. (посмотрите этот ответ для Подробнее)

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

person Fonix    schedule 13.11.2013