1

我正在尝试按照 nativescript 插件种子(iOS 说明https://docs.connect.squareup.com/payments/readersdk/setup-ios)为 Square Reader 创建一个新插件。最后一步是传入一个UIViewController对象,以便它可以在您的应用程序中显示结帐页面。尝试传入所需的参数时,我一直收到如下错误:

-[SquareReader checkoutController:didFailWithError:]:无法识别的选择器发送到实例 0x10aa5c960 * JavaScript 调用堆栈:( 0 UIApplicationMain@[native code] 1 start@file:///app/tns_modules/tns-core-modules/application/application. js:272:26 2 anonymous@file:///app/app.js:4:18 3 evaluate@[native code] 4 moduleEvaluation@:1:11 5 @:7:48 6 promiseReactionJob@:1:11) *Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SquareReader checkoutController:didFailWithError:]: unrecognized selector sent to instance 0x10aa5c960' *** First throw call stack: (0x185676d8c 0x1848305ec 0x185684098 0x18567c5c8 0x18556241c 0x1019b21f4 0x184f68aa0 0x184f68a60 0x184f7565c 0x18561f070 0x18561cbc8 0x18553cda8 0x187522020 0x18f55c758 0x101640044 0x10163e7a4 0x10163e26c 0x100cf5630 0x1012f0e14 0x1012f9a24 0x1012f9a34 0x1012f2ee0 0x10128c198 0x101261e94 0x1013f6b9c 0x100d0a354 0x101492964 0x1012fa494 0x1012f9a34 0x1012f9a34 0x1012f9a34 0x1012f2ee0 0x10128c198 0x101261e94 0x1013f6c80 0x10148e8e0 0x100d01898 0x100d47f50 0x10079629c 0x184fcdfc0)

我正在尝试UIViewController在我的演示应用程序中实现:

导出类 HelloWorldModel 扩展 UIViewController { ... }

错误来自以下几行:

让 checkoutController = new SQRDCheckoutController( {parameters: params, delegate: this }); checkoutController.presentFromViewController(view);

我制作的具有功能 (我需要实现)并且是该类的实例化的this类对象在哪里。SquareReadercheckoutControllerDidFailWithErrorSQRDCheckoutControllerDelegateviewHelloWorldModel

我没有看到将UIViewControllers 传递给 {N} 中的原生 iOS 方法的任何内容,但我发现https://discourse.nativescript.org/t/example-of-extending-uiviewcontroller-in-angular-2-and-nativescript/ 469 哪个可能是相似的?

4

1 回答 1

1

请参考Objective C to JS docs以了解调用本机api的正确方法。

假设SQRDCheckoutController是控制器,使用参数初始化它的正确方法是

SQRDCheckoutController.initWithParametersDelegate(params, delegate)

如果您使用 TypeScript,请生成声明文件,以便您了解调用可用的原生 api 方法的 JS 形式是什么。

您可以参考 tns 核心模块以获取UIViewController实现的示例。如果您有计划将此插件开源,请随时将其上传到 GitHub,以便社区的插件大师可以轻松帮助您。

于 2018-10-12T06:43:41.127 回答