带有 UIViewController 的插件

Posted

技术标签:

【中文标题】带有 UIViewController 的插件【英文标题】:Plugin with UIViewController 【发布时间】:2015-07-31 16:07:06 【问题描述】:

有人可以向我解释一下 Cordova ios 插件的生命周期吗?

特别是,我有一个我正在尝试开发的插件,其中包含一个UIView(以及相关联的UIViewController)。

如何从我的扩展 CDVPlugin 类中获取 Cordova UIView,以便我可以将我的插件作为子视图添加到它(它是这样工作的吗?)。

我想暂时在我的 Cordova 应用程序顶部显示我的 UIView,然后将其关闭,返回到我的 JS/html 应用程序。

【问题讨论】:

【参考方案1】:

如果你想在cordova webview上展示整个UIViewController(全屏),你可以这样做

[self.viewController presentViewController:yourViewController animated:YES completion:nil];

例子:

Camera plugin

InAppBrowser plugin

如果您只想在 cordova webview 上添加一个视图,您可以这样做

[self.viewController.view addSubview:yourView];

例子:

MapKit plugin

不同之处在于,第一种方法显示整个视图控制器,全屏,第二种方法显示可以具有您想要的大小和位置的视图,如果您不使其具有与设备相同的大小屏幕用户将在其下看到您的cordova webview

【讨论】:

太棒了-谢谢!你有任何插件的任何例子。两者有什么区别? 编辑示例和差异 如果你 google presentViewController 它会显示 Apple 文档页面,Apple 文档页面可以显示 Objective-C 和 Swift 的信息。 developer.apple.com/reference/uikit/uiviewcontroller/…【参考方案2】:

请参考上面@jcesarmobile 给出的答案

Plugin with UIViewController

对于像我这样无法确定如何定义 yourViewController 的不成熟 iOS 开发人员,请按照以下代码进行操作

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

其中 Main 是故事板文件名,iController 是在 Main.Storyboard 文件中定义的 viewController 的故事板标识符

请为@jcesarmobile 给出的上述答案投票

【讨论】:

以上是关于带有 UIViewController 的插件的主要内容,如果未能解决你的问题,请参考以下文章

嵌套的 UIViewController 需要推送到根 UINavigationController

UIViewController 最佳实践——加载

在现有的 UINavigationController 中插入 UIViewController

UIViewController 作为 Apple PodCast 应用程序 [关闭]

从父 UIViewController 类继承 UI 组件?

将 UIViewController 的 UI 扩展到子 UIViewControllers