Извините, потому что я не могу включить код, потому что эта ситуация столкнулась со мной в работе и по некоторым причинам безопасности я не могу поделиться кодом.
Что у меня есть:
У меня есть модуль Objective-c, содержащий компоненты пользовательского интерфейса и основные базовые классы
Я хочу:
Я хочу использовать компонент Swift (RatePlanCardView) в основном проекте.
Мне нужно, когда для создания контроллера представления, содержащего представление с пользовательским классом (RatePlanCardView) и создания выхода для него, я могу вызвать любую функцию в этом пользовательском классе.
Что я сделал:
Я создал контроллер представления в раскадровке, содержащей представление, затем изменил класс этого представления на (RatePlanCardView) и создал для него выход.
Что случилось:
Когда я следил за отладкой, я обнаружил, что классом этого выхода является UIView, а не (RatePlanCardView), поэтому каждый вызов любой функции в ошибке пользовательского класса происходил, как показано ниже.
Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [UIView AdjustCardView]: нераспознанный селектор отправлен в экземпляр 0x7ffbae08ab10'
Пока (AdjustCardView) является функцией в классе (RatePlanCardView).
У меня было 2 решения:
1 - Я создал модуль Swift для нового компонента (RatePlanCardView), и этот класс наследует класс от модуля ObjC (ExpandableCardView), и он успешно компилируется. Когда я помещаю новый модуль в основной проект и использую его по мере необходимости, все успешно компилируется, но когда я перехожу к своему новому контроллеру представления и вызываю функцию (AdjustCardView), появляется ошибка выше. но когда я вижу определение этой функции, xCode перемещает меня к правильной функции, но он не может выполнить какую-либо функцию, потому что он уже видит пользовательский класс как UIView, а не RatePlanCardView.
2- Я пытался найти, как создать смешанный разработанный модуль, но не смог найти поддержки учебника для этого решения.
Примечание:
Спасибо за ваше терпение и поддержку и за то, что вы дали мне время прочитать мои вопросы.
Конечно, любое другое решение будет более чем приветствоваться. Также, если вы помогли мне с любым из вышеуказанных решений, также спасибо.
Заранее спасибо.
Я решил эту проблему:
Я создал фреймворк, содержащий код objC и код swift с файлом заголовка моста, и все работало просто отлично