NativeScript:在 NativeScript 中使用自定义 objective-c 导入 class 到 Xcode 项目中
NativeScript: use custom objective-c imported class into Xcode project in NativeScript
基本上我有一些 Objective-c class 已经存在,我想在我的 NativeScript projet 中使用它们。目前我已经将这些文件添加到 Xcode 项目目标,我希望能够从 nativeScript js 调用我的 objective-c 代码。我已经阅读了文档,但我不明白。看起来很复杂。基本上目前我想做的就是能够通过可能调用一些东西来呈现我的自定义视图控制器
const vc = MyCustomViewController.alloc.initWithNibName("xib file")
page.frame.ios.controller.present(vc,true, nil)
我有义务为此创建一个插件吗?我是否有义务使用我的 objective-c class 在 Xcode 中构建框架,然后导入框架?
所以我发现了。
实际上你需要做的是首先将你的原生 iOS 代码编译成一个框架。根据文档,所有 类 都必须继承 NSObject,并且如果您在 swift 中编写,所有函数都必须用 @objc 标记才能暴露给 objective-c Nativescript 端。您还会注意到 在框架中您的包不是主包 。在此示例中,您可以看到如何从框架中检索包并从中加载 xib。
然后您需要将框架文件添加到 Nativescript 插件中。为此,您想将框架添加到插件的 iOS 文件夹 yourPlugin/platform/iOS/yourFramework.framework
.
然后,您需要将您的插件添加到您的应用中。您可以使用下一个命令行添加本地插件。注意路径以 /src 文件夹结尾。
tns plugin add /path/to/yourplugin/src
现在,您可以调用本机函数和 类,甚至无需导入它们。当然,这仅适用于 iOS。如果您 运行 您的应用在 android 上,调用这些方法将会崩溃。
要在您的 Nativescript 端显示此 viewController,您需要调用以下代码。顺便说一下,您可以在其他地方找到文档以获取对当前 page
或 frame
对象的引用。
const controller = page.frame.ios.controller
const vc = IOMediaViewController.create()
vc.modalPresentationStyle = UIModalPresentationFullScreen
controller.presentViewControllerAnimatedCompletion(vc,true,null)
基本上我有一些 Objective-c class 已经存在,我想在我的 NativeScript projet 中使用它们。目前我已经将这些文件添加到 Xcode 项目目标,我希望能够从 nativeScript js 调用我的 objective-c 代码。我已经阅读了文档,但我不明白。看起来很复杂。基本上目前我想做的就是能够通过可能调用一些东西来呈现我的自定义视图控制器
const vc = MyCustomViewController.alloc.initWithNibName("xib file")
page.frame.ios.controller.present(vc,true, nil)
我有义务为此创建一个插件吗?我是否有义务使用我的 objective-c class 在 Xcode 中构建框架,然后导入框架?
所以我发现了。
实际上你需要做的是首先将你的原生 iOS 代码编译成一个框架。根据文档,所有 类 都必须继承 NSObject,并且如果您在 swift 中编写,所有函数都必须用 @objc 标记才能暴露给 objective-c Nativescript 端。您还会注意到 在框架中您的包不是主包 。在此示例中,您可以看到如何从框架中检索包并从中加载 xib。
然后您需要将框架文件添加到 Nativescript 插件中。为此,您想将框架添加到插件的 iOS 文件夹 yourPlugin/platform/iOS/yourFramework.framework
.
然后,您需要将您的插件添加到您的应用中。您可以使用下一个命令行添加本地插件。注意路径以 /src 文件夹结尾。
tns plugin add /path/to/yourplugin/src
现在,您可以调用本机函数和 类,甚至无需导入它们。当然,这仅适用于 iOS。如果您 运行 您的应用在 android 上,调用这些方法将会崩溃。
要在您的 Nativescript 端显示此 viewController,您需要调用以下代码。顺便说一下,您可以在其他地方找到文档以获取对当前 page
或 frame
对象的引用。
const controller = page.frame.ios.controller
const vc = IOMediaViewController.create()
vc.modalPresentationStyle = UIModalPresentationFullScreen
controller.presentViewControllerAnimatedCompletion(vc,true,null)