如何在 Cordova 中从 CDVPlugin 显示 ViewController?

Posted

技术标签:

【中文标题】如何在 Cordova 中从 CDVPlugin 显示 ViewController?【英文标题】:How To Show ViewController from CDVPlugin in Cordova? 【发布时间】:2015-02-04 16:21:01 【问题描述】:

我已经为此苦苦挣扎了几天,无法让它发挥作用,也找不到其他人似乎已经解决了这个问题。希望有人可以提供帮助。

我有一个简单的 ViewController,在 Swift 的 Storyboard 中有 2 个视图,我试图通过 Cordova 插件打开它(android 版本有效)。我已经做到了它不会出错的地步,并且我看到每一行代码都被击中,但我仍然没有看到 ViewController 显示。该应用程序的独立版本运行良好。

这是插件调用的代码:

import Foundation

@objc(SomePlugin) class SomePlugin : CDVPlugin 
    func show(command: CDVInvokedUrlCommand) 
        // step 1. take a storyboard variable
        var storyBoard:UIStoryboard? = nil
        storyBoard = UIStoryboard(name: "Main", bundle: nil)

        // step 2. un-box storyboard to sb variable
        if let sb = storyBoard 

            // step 3. create new window
            var window = UIWindow(frame: UIScreen.mainScreen().bounds)

            // step 4. start view controller
            window.rootViewController = sb.instantiateInitialViewController() as ViewController

            // step 5. make key window & visible
            window.makeKeyAndVisible()
        
    

如果还有什么可以帮助的,请告诉我。提前致谢!

【问题讨论】:

【参考方案1】:

第 1 步:需要将情节提要导入为

  <resource-file src="src/ios/MyStoryboard.storyboard"/>

第 2 步:将您的框架导入为

  <framework src="src/ios/helloSwiftFrame.framework" custom="true"/>

在plugin.xml中做以上两步

第 3 步:现在进入插件中的 .m 文件

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
    UIViewController *yourViewController = [storyboard   instantiateViewControllerWithIdentifier:@"MyStoryID"] ;
   [self.viewController presentViewController: yourViewController animated:YES completion:nil];    

别忘了将你的框架导入到 .m 文件中。

大功告成..!!快乐编码

【讨论】:

【参考方案2】:

问题不在代码中,问题出在错误的提交/合并中,导致我的故事板和视图控制器的部分内容被炸毁。恢复文件后,它按预期打开了。

【讨论】:

以上是关于如何在 Cordova 中从 CDVPlugin 显示 ViewController?的主要内容,如果未能解决你的问题,请参考以下文章

phonegap ios plugin notificationEx CDVPlugin.h 文件未找到

如何在带有 cordova 的 iOS 设备中从 iCloud 读取文件?

Phonegap 3.4.0 和相机插件 (iOS) 的问题:CDVPlugin 类 CDVCamera (pluginName: camera) 不存在

ios cordova 原生与js通讯原理

无法在 cordova 2.4 中创建 phonegap ios 插件

Cordova/Cordova.h file not found的解决方法