React Native app purely in Swift

后端 未结 6 542
生来不讨喜
生来不讨喜 2020-12-24 03:42

I created my first react native app using the following command.

react-native init PropertyFinder

This created a project for ios in

6条回答
  •  生来不讨喜
    2020-12-24 04:06

    This excellent post helped me solving the problem.

    Solution

    1. Add Bridging Header
    #import "RCTBridgeModule.h"
    #import "RCTBridge.h"
    #import "RCTEventDispatcher.h"
    #import "RCTRootView.h"
    #import "RCTUtils.h"
    #import "RCTConvert.h"
    
    1. Add AppDelegate.Swift
    var bridge: RCTBridge!
    
      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        /**
         * Loading JavaScript code - uncomment the one you want.
         *
         * OPTION 1
         * Load from development server. Start the server from the repository root:
         *
         * $ npm start
         *
         * To run on device, change `localhost` to the IP address of your computer
         * (you can get this by typing `ifconfig` into the terminal and selecting the
         * `inet` value under `en0:`) and make sure your computer and iOS device are
         * on the same Wi-Fi network.
         */
    
        let jsCodeLocation = NSURL(string: "http://localhost:8081/index.ios.bundle?platform=ios&dev=true")
    
        /**
         * OPTION 2
         * Load from pre-bundled file on disk. The static bundle is automatically
         * generated by "Bundle React Native code and images" build step.
         */
    
        // jsCodeLocation = NSBundle.mainBundle().URLForResource("main", withExtension: "jsbundle")
    
        let rootView = RCTRootView(bundleURL:jsCodeLocation as URL!, moduleName: "PropertyFinder", initialProperties: nil, launchOptions:launchOptions)
    
        self.bridge = rootView?.bridge
    
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let rootViewController = UIViewController()
    
        rootViewController.view = rootView
    
        self.window!.rootViewController = rootViewController;
        self.window!.makeKeyAndVisible()
    
        return true
      }
    
    1. Remove the AppDelegate.h, AppDelegate.m and the main file.

    2. Clean and build your project.

提交回复
热议问题