不好意思,因为这种情况使我在工作中遇到了我,并且出于安全考虑,我无法共享代码。
我有一个Objective-c吊舱,其中包含UI组件和主要的基类
我想在主项目中使用Swift组件(RatePlanCardView)。 我需要何时创建包含自定义类(RatePlanCardView)的视图的视图控制器并为其创建出口,我可以在此自定义类中调用任何函数。
我在包含视图的情节提要中创建了一个视图控制器,然后将该视图的类更改为(RatePlanCardView)并为其创建了出口。
当我进行调试时,我发现此插座的类不是UIView(RatePlanCardView),因此自定义类错误中对任何函数的每次调用都如下所示。
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[UIView AdjustCardView]:无法识别的选择器已发送到实例0x7ffbae08ab10'
(adjustCardView)是(RatePlanCardView)类中的函数。
1-我为新组件(RatePlanCardView)创建了Swift pod,该类从ObjC pod(ExpandableCardView)继承了一个类,并且编译成功。当我将新的pod放在主项目中并使用它时,因为我需要一切都可以成功编译,但是当我导航到新的视图控制器并调用函数(adjustCardView)时,就会发生上述错误。但是,当我看到此函数的定义时,xCode将我移至正确的函数,但它无法执行任何函数,因为它已将自定义类视为UIView,而不是RatePlanCardView。
2-我试图搜索如何创建混合开发的吊舱,但找不到该解决方案的教程支持。
感谢您的耐心和支持,并给我您宝贵的时间阅读我的问题。 当然,任何其他解决方案都将受到欢迎。另外,如果您为我提供了上述解决方案,也谢谢。
谢谢。
我创建了一个包含objC代码和带有桥接头文件的swift代码的框架,并且一切正常
答案 0 :(得分:0)
您创建的出口应该是这样的:
@property (nonatomic, weak) IBOutlet RatePlanCardView *rpCardViewOutlet;
现在转到XIB并将此插座与您的RatePlanCardView
视图连接。这样,仅当类型匹配并且对此类的函数的任何调用均应触发时,才可以将视图与插座连接。