ReactNative - 如何在ViewController中调用函数

时间:2016-03-18 02:14:30

标签: ios swift react-native

我是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()函数。 感谢

2 个答案:

答案 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(....)