簡體   English   中英

當 react-native 應用程序視圖加載時,如何在本機 ıos 上調用 ViewController class?

[英]How can call a ViewController class on native ıos when react-native app view load?

我想創建一個 react-native 應用程序。 在這個應用程序中,我想使用我的 swift 代碼。 當 react-native 應用程序視圖加載 ios 設備時,我想調用我的 swift 代碼,如本機 Z4571FA8BFD915635ADF4700 應用程序。

謝謝

I'm not a react-native specialist, but I think you should create a class in Swift, export it in Objective-C (make it accessible from JavaScript) and then use in your JavaScript code. 我假設您已經在 Xcode 中有一個項目。 您需要執行幾個步驟:

  1. 將 swift 文件添加到您的項目中:文件 → 新建 → 文件...(或 CMD+N)

  2. 系統將詢問您是否要創建 Objective-C 橋接 Header 和 select “創建橋接頭”

  3. 將創建your-project-name-Bridging-Header.h文件(其中your-project-name是您的項目的名稱),這是 objective-c 和 swift 之間的粘合劑,我們將使用它來將我們的代碼導出到JavaScript

  4. 為了向您展示一些示例,我將將此代碼用於 swift 文件:

import Foundation

@objc(Counter) //1
class Counter: NSObject { //2
  private var count = 0
  @objc //3
  func increment() {
    count += 1
    print("count is \(count)")
  }
}

Make sure that you notice some important parts (that differ from typical swift code): marks 1 and 3 - you have to add @objc declaration for class and function, (2) the class should inherit from NSObject

  1. your-project-name-Bridging-Header.h中,您需要使用此代碼才能在 JavaScript 中使用您的 swift 代碼:
#import "React/RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(Counter, NSObject)
RCT_EXTERN_METHOD(increment)
@end
  1. 將此代碼添加到您的App.js
// App.js
import { NativeModules } from 'react-native'

NativeModules.Counter.increment()

所有這些示例都取自這篇文章: Swift in React Native - 終極指南第 1 部分:我強烈推薦閱讀的模塊,因為它包含主題中的更多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM