之前搞HBuilder开发app,需求需要用到第三方地图SDK,所以要用原生开发地图SDK,在H5端调用。
以下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);
在这里顺便提一下另一个解决方案,那就可以做成插件,在原生里跳转
- (void)PluginTestFunction:(PGMethod*)commands
{
if ( commands ) {
NewViewController* pNewController = [[NewViewController alloc] init];
[self.rootViewController presentViewController:pNewController animated:YES completion:nil];
}
}
因为我对原生不熟悉,所以踩了很多坑,在此和同学们分享,感谢您的阅读!