我有一个html5项目,用的官方最新ios-sdk的下载里带的那个叫做“hbuilder-hello”的xcode工程整合到xcode里,已经成功了也能调适和打包。
我看这个html5界面似乎是工程里面的一个叫做“viewcontroller”的oc文件有关系。我现在在工程里又新建了一组oc文件,比如叫做“abc.m“和”abc.h“,然后在这个abc里写了一个界面,我能够从html5的界面里通过点击一个<a>标签或者是<button>标签来将页面跳转到abc么?
我比较小白,希望能指点的详细一点,谢谢
呵呵和嘿嘿
- 发布:2016-01-14 10:22
- 更新:2017-06-22 18:24
- 阅读:8946
html5跳转ios原生界面的问题
分类:HTML5+
可以通过创建原生插件的方式在原生代码中打开原生页面,示例代码可以参考HBuilder-Integrate中得plugintest类也可以参考文档 http://ask.dcloud.net.cn/article/67
以下是用原生代码打开ViewController的代码示例
- (void)PluginTestFunction:(PGMethod*)commands
{
if ( commands ) {
NewViewController* pNewController = [[NewViewController alloc] init];
[self.rootViewController presentViewController:pNewController animated:YES completion:nil];
}
}
也可以通过NJS的方法打开工程内的原生页面不过使用时需要注意应用的rootViewController的获取
以下NSJ代码是在HBuilder-Hello工程上测试的并不具有完全的通用性,需要根据原生工程的具体情况稍作修改,主要是两点
1 要打开的原生UIViewController的类名
2 获取当前应用RootViewController的方法
// NewViewController为应用内创建的原生的ViewController类名,所调用页面的内容需要在原生代码中完成
var newVCobj = plus.ios.newObject("NewViewController");
var UIApplicationClass = plus.ios.importClass("UIApplication");
var UIAppObj = UIApplicationClass.sharedApplication();
var del = plus.ios.invoke(UIAppObj,"delegate");
// 如果当前应用delegate对象包含UIWindow对象并且变量名命名为“window”可以这么写,
// 否则需要根据实际代码情况修改
// 应用的delegate对象也可以添加一个返回UIViewController的方法
var appWindowObj = plus.ios.invoke(del,"window");
var appRootController = plus.ios.invoke(appWindowObj,"rootViewController");
plus.ios.invoke(appRootController,"presentViewController:animated:completion:",newVCobj,"YES",null);
呵呵和嘿嘿 (作者)
太给力了!谢谢大神指点!
2016-01-15 16:32