如何在 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) 不存在