我想创建一个 react-native 应用程序。在这个应用程序中,我想使用我的 swift 代码。当 react-native 应用程序 View 加载 ios 设备时,我想调用我的 swift 代码,就像原生 ios 应用程序一样。
谢谢
最佳答案
我不是 react-native 专家,但我认为您应该在 Swift 中创建一个类,将其导出到 Objective-C(使其可从 JavaScript 访问),然后在您的 JavaScript 代码中使用。我假设您已经在 Xcode 中创建了一个项目。您需要执行几个步骤:
向您的项目添加一个 swift 文件:文件 → 新建 → 文件…(或 CMD+N)选择 Swift 类型并提供一个名称
系统会询问您是否要创建 Objective-C 桥接 header 并选择“创建桥接 header ”
将创建文件
your-project-name-Bridging-Header.h
(其中your-project-name
是您的项目名称) ,这是 objective-c 和 swift 之间的粘合剂,我们将使用它来将我们的代码导出到 JavaScript为了向您展示一些示例,我将为 swift 文件使用此代码:
import Foundation
@objc(Counter) //1
class Counter: NSObject { //2
private var count = 0
@objc //3
func increment() {
count += 1
print("count is \(count)")
}
}
确保您注意到一些重要的部分(不同于典型的 swift 代码):标记 1 和 3 - 您必须为类和函数添加 @objc
声明,(2) 类应该继承自 NSObject
- 在
your-project-name-Bridging-Header.h
中,您需要使用此代码才能在 JavaScript 中使用您的 swift 代码:
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(Counter, NSObject)
RCT_EXTERN_METHOD(increment)
@end
- 将此代码添加到您的
App.js
:
// App.js
import { NativeModules } from 'react-native'
NativeModules.Counter.increment()
所有这些例子都来自这篇文章:Swift in React Native - The Ultimate Guide Part 1: Modules我强烈推荐阅读,因为它在主题中包含更多详细信息。
关于ios - 当 react native 应用程序 View 加载时,如何在 native ios 上调用 ViewController 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604022/