如何创建混合开发平台

时间:2019-01-23 11:18:13

标签: ios objective-c swift cocoapods pod

不好意思,因为这种情况使我在工作中遇到了我,并且出于安全考虑,我无法共享代码。

我所拥有的:

我有一个Objective-c吊舱,其中包含UI组件和主要的基类

我要:

我想在主项目中使用Swift组件(RatePlanCardView)。 我需要何时创建包含自定义类(RatePlanCardView)的视图的视图控制器并为其创建出口,我可以在此自定义类中调用任何函数。

我做了什么:

我在包含视图的情节提要中创建了一个视图控制器,然后将该视图的类更改为(RatePlanCardView)并为其创建了出口。

发生了什么事

当我进行调试时,我发现此插座的类不是UIView(RatePlanCardView),因此自定义类错误中对任何函数的每次调用都如下所示。

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[UIView AdjustCardView]:无法识别的选择器已发送到实例0x7ffbae08ab10'

(adjustCardView)是(RatePlanCardView)类中的函数。

我有2个解决方案:

1-我为新组件(RatePlanCardView)创建了Swift pod,该类从ObjC pod(ExpandableCardView)继承了一个类,并且编译成功。当我将新的pod放在主项目中并使用它时,因为我需要一切都可以成功编译,但是当我导航到新的视图控制器并调用函数(adjustCardView)时,就会发生上述错误。但是,当我看到此函数的定义时,xCode将我移至正确的函数,但它无法执行任何函数,因为它已将自定义类视为UIView,而不是RatePlanCardView。

2-我试图搜索如何创建混合开发的吊舱,但找不到该解决方案的教程支持。

注意:

感谢您的耐心和支持,并给我您宝贵的时间阅读我的问题。 当然,任何其他解决方案都将受到欢迎。另外,如果您为我提供了上述解决方案,也谢谢。

谢谢。

我解决了这个问题:

我创建了一个包含objC代码和带有桥接头文件的swift代码的框架,并且一切正常

1 个答案:

答案 0 :(得分:0)

您创建的出口应该是这样的:

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

现在转到XIB并将此插座与您的RatePlanCardView视图连接。这样,仅当类型匹配并且对此类的函数的任何调用均应触发时,才可以将视图与插座连接。