如何在Cordova中从CDVPlugin显示ViewController?

问题描述 投票:1回答:2

几天来我一直在努力解决这个问题,无法让它发挥作用,也找不到其他似乎已经想到这一点的人。希望有人可以提供帮助。

我在Swift的Storyboard中有一个简单的ViewController和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()
        }
    }
}

如果还有其他任何帮助,请告诉我。提前致谢!

ios cordova swift cordova-plugins xcode-storyboard
2个回答
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文件中导入您的框架。

就是这样...... !!快乐的编码


0
投票

问题不在代码中,问题是在一个糟糕的提交/合并中,我的故事板和viewcontroller的部分内容被吹走了。恢复文件后,它按预期打开。

© www.soinside.com 2019 - 2024. All rights reserved.