Как создать смешанный модуль разработки

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

Что у меня есть:

У меня есть модуль 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 и быстрый код с заголовочным файлом моста, и все работало нормально.

Пожалуйста, дважды проверьте, правильно ли для UIView установлено значение RatePlanCardView в Identity Inspector. Если это так, я бы удалил розетку в инспекторе подключений и повторил попытку.

Magnas 23.01.2019 13:29

@Магнас, я попробую рассказать тебе, спасибо

RGB 24.01.2019 01:01

@Магнас, я пытался, и ничего не вышло

RGB 26.01.2019 21:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
196
1

Ответы 1

Созданная вами розетка должна выглядеть примерно так:

@property (nonatomic, weak) IBOutlet RatePlanCardView *rpCardViewOutlet;

Теперь перейдите в XIB и подключите этот выход к вашему представлению RatePlanCardView. Таким образом, вы можете соединить представление с выходом только в том случае, если тип соответствует, и любой вызов функции этого класса должен срабатывать.

Должно, но этого не происходит. Что произошло, так это то, что Xcode видит этот выход типа UIView, а не типа RatePlanCardView.

RGB 23.01.2019 20:05

Другие вопросы по теме