【发布时间】:2019-06-16 23:19:41
【问题描述】:
对不起,我不能包含代码,因为我在工作中遇到了这种情况,并且出于某些安全原因,我不能共享代码。
我有什么:
我有一个包含 UI 组件和主要基类的 Objective-c pod
我想:
我想在主项目中使用 Swift 组件 (RatePlanCardView)。 我需要何时创建一个包含自定义类(RatePlanCardView)的视图并为其创建一个出口的视图控制器,我可以调用这个自定义类中的任何函数。
我做了什么:
我在包含视图的故事板中创建了一个视图控制器,然后我将此视图的类更改为 (RatePlanCardView) 并为其创建了一个出口。
发生了什么:
当我进行调试时,我发现这个插座的类是 UIView 而不是(RatePlanCardView)所以每次调用自定义类中的任何函数都会发生如下错误。
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIView adjustCardView]: unrecognized selector sent to instance 0x7ffbae08ab10”
虽然 (adjustCardView) 是 (RatePlanCardView) 类中的函数。
我有 2 个解决方案:
1- 我为新组件 (RatePlanCardView) 创建了 Swift pod,该类从 ObjC pod (ExpandableCardView) 继承了一个类,并且编译成功。当我将新 pod 放入主项目并使用它时,一切都成功编译,但是当我导航到新的视图控制器并调用函数 (adjustCardView) 时,上面的错误就会触发。但是当我看到此函数的定义时,xCode 将我移至正确的函数,但它无法执行任何函数,因为它已经将自定义类视为 UIView,而不是 RatePlanCardView。
2- 我试图搜索,如何创建混合开发的 pod,但我找不到任何支持此解决方案的教程。
注意:
感谢您的耐心和支持,感谢您抽出时间阅读我的问题。 当然,任何其他解决方案都将受到欢迎。另外,如果您帮助我解决上述任何问题,也谢谢。
提前致谢。
我解决了这个问题:
我创建了包含 objC 代码和带有桥接头文件的 swift 代码的框架,一切正常
【问题讨论】:
-
请仔细检查 UIView 是否已正确设置为 Identity Inspector 中的 RatePlanCardView。如果有,我会删除 Connections Inspector 中的插座并重试。
-
@Magnas 我会试着告诉你,谢谢
-
@Magnas 我试过了,什么也没发生
标签: ios objective-c swift cocoapods