呵呵和嘿嘿
呵呵和嘿嘿
  • 发布:2016-01-14 10:22
  • 更新:2017-06-22 18:24
  • 阅读:8946

html5跳转ios原生界面的问题

分类:HTML5+

我有一个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 负责人:无 分享
已邀请:
骁骑

骁骑

可以通过创建原生插件的方式在原生代码中打开原生页面,示例代码可以参考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

梁liang

梁liang

你好,我使用了你提供的(http://ask.dcloud.net.cn/question/14751)js跳转oc的方法。现在我想返回到最初的h5页面。

背景是这样的:(整个项目是h5,其中一个模块需要用到oc的代码。所以,我使用了h5本地打包ios的sdk。通过你提供的跳转方法。跳转到oc里面,经过引导页,登录,到主页面。现在,我想通过主页面的返回按钮,直接返回到h5页面。)

  • 骁骑

    你在原生代码里把新打开的controller关闭,然后在把5+所在的controller显示 出来就行了

    2016-02-15 19:17

  • 梁liang

    回复 骁骑:在oc 用到最多的是跳转关闭。你说的controller的关闭是remove吗/还是怎么样的,能具体说下吗?

    2016-02-16 10:27

梁liang

梁liang

在oc代码里面,我只用到过跳转关闭页面。你所说的控制器关闭,能具体说说吗?

9***@qq.com

9***@qq.com - 新手

要是想用push方法怎么办呢......?

该问题目前已经被锁定, 无法添加新回复