我是ReactNative的新手,我正在尝试将React Native集成到我当前的项目中。
在我的ViewController中包含RCTRootView,代码实现如下:
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
.....
let bridge = RCTBridge(bundleURL: jsCodeLocation, moduleProvider: nil, launchOptions: nil)
let reactRootView = RCTRootView(bridge: bridge, moduleName: "Index", initialProperties: props)
self.view.addSubview(reactRootView);
reactRootView.frame = self.view.bounds
reactRootView.delegate = self;
....
}
func onReactEvent(event :NSDictionary , callback: RCTResponseSenderBlock) {}
ReactNativeManager.swift
@objc func sendCustomEventToHost(event: NSDictionary, callback: RCTResponseSenderBlock) -> Void {}
那么如何在 ReactNativeManager 中的函数 sendCustomEventToHost()中调用 ViewController 中的 onReactEvent()函数。 感谢
答案 0 :(得分:1)
我知道如何使用 launchOptions
将我的ViewController传递给ReactNativeManager<强> ViewController.swift 强>
let bridge = RCTBridge(bundleURL: jsCodeLocation, moduleProvider: nil, launchOptions: ["controller":self"])
从中访问 的 ReactNativeManager.swift 强>
let controller = self.bridge.launchOptions["controller"]
希望这有帮助!!
答案 1 :(得分:0)
在ReactNativeManager
中,您必须创建一个ViewController实例。
例如:
let viewC = ViewController()
然后你打电话:
viewC.onReactEvent(....)