【问题标题】:How to convert iOS react native template to swift?如何将iOS反应本机模板转换为swift?
【发布时间】:2018-01-09 12:09:46
【问题描述】:

我一直在阅读有关 react native 并决定尝试一下,我在 Swift 方面相当有经验,但从未尝试过 Objective c,所以我想将模板项目转换为使用 AppDelegate.swift

我在这个已接受的答案中遵循了解决方案:React Native app purely in Swift,但我在运行项目时只有一个黑屏

有谁知道如何将模板转换为 Swift?我可以直接从 React Native 调用 swift 代码而不需要任何桥头吗?

我正在运行 React Native 0.52 顺便说一句

【问题讨论】:

    标签: ios swift react-native


    【解决方案1】:

    所以经过几次尝试,我发现了如何使它与 React Native 0.52 一起工作

    1 - 删除 AppDelegate.m、AppDelegate.h 和 main.m

    2 - 创建一个新的 AppDelegate.swift,当它询问您是否要创建一个 Objective-C 桥头时,只需说“是”

    3 - 将以下内容复制到您的 Bridging-Header.h 文件中:

    #import <React/RCTBridgeModule.h>
    #import <React/RCTBridge.h>
    #import <React/RCTEventDispatcher.h>
    #import <React/RCTRootView.h>
    #import <React/RCTUtils.h>
    #import <React/RCTConvert.h>
    #import <React/RCTBundleURLProvider.h>
    

    4 - 在您的 AppDelegate.swift 文件中使用以下代码并编辑项目名称:

    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
      var window: UIWindow?
      var bridge: RCTBridge!
    
      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        let jsCodeLocation: URL
    
        jsCodeLocation = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource:nil)
        let rootView = RCTRootView(bundleURL: jsCodeLocation, moduleName: "YOUR-PROJECT-NAME", initialProperties: nil, launchOptions: launchOptions)
        let rootViewController = UIViewController()
        rootViewController.view = rootView
    
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = rootViewController
        self.window?.makeKeyAndVisible()
    
        return true
      }
    }
    

    5 - 不要忘记将“YOUR-PROJECT-NAME”替换为您的实际项目名称

    6 - 快跑!快乐编码:)

    【讨论】:

    • 太棒了!工作正常!
    • @Steve 你能告诉我如何在 Bridging-Header.h 文件中导入第三方库
    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2018-08-15
    • 2019-02-24
    • 2019-12-04
    相关资源
    最近更新 更多