是否可以在没有Objective C的情况下使用React的RCTViewManager?

时间:2020-08-10 13:03:31

标签: ios objective-c swift react-native rctbridge

我目前正在尝试将我的React Native应用程序桥接到使用 具有Objective C标头的大型动态框架。我要引用的还有一个Objective C演示应用程序。

我知道我可以在Objective C中做到这一点,但是我想用Swift编写所有新代码,因为这是一个我希望可以维护的相当大的项目。是否可以使用Swift(仅)作为React Native的RCTViewManager的桥梁,以便我可以显示iOS原生视图?

当前,我必须为RCTViewManager创建一个实现类(.m),一个相应的标头(.h),一个桥接标头(.h),以及我想要的UIView的快速代码(.swift)进行自定义-所有这些都可以通过Swift中的RCTViewManager创建一个RCTView,可以由requireNativeComponent访问。由于我实际上需要数十个专用的本机RCTView,因此非常麻烦。

这是我尝试过的一些Swift代码:

class CustomViewZeroManager: RCTViewManager
{
  override func view() -> UIView!
  {
    let player = LCOpenSDK_PlayWindow.init(playWindow: CGRect(x: 0, y: 0, width: 375, height: 211), index: 0)
    player!.playRtspReal("", devID: "", psk: "", channel: 0, definition: 1)
    return player!.getView()
  }
}

在尝试这种方法时,我遇到了错误“在UIManager中找不到“违反常态:requireNativeComponent:“ CustomViewZero”。

我认为这是因为在Swift文件中不存在用于导出模块(RCT_EXPORT_MODULE)并执行自动名称解析的宏。我相信宏不是Swift的功能,那么有什么方法或示例可以用来桥接RCTView(通过RCTViewManager),或者编写不带Objective C和Swift的RCTBridgeModule吗?

0 个答案:

没有答案
相关问题