【问题标题】:How to create a mixed development pod如何创建混合开发 pod
【发布时间】: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


【解决方案1】:

你创建的插座应该是这样的:

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

现在转到 XIB 并将此插座与您的 RatePlanCardView 视图连接。这样,如果类型匹配并且任何对此类函数的调用都应该触发,则您只能将视图与插座连接。

【讨论】:

  • 应该但是这不会发生。发生的事情是 Xcode 看到这个 UIView 类型的出口,而不是 RatePlanCardView 类型的出口
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
相关资源
最近更新 更多