BCLOUD
BCLOUD
  • 发布:2016-01-14 22:58
  • 更新:2016-03-14 14:22
  • 阅读:1805

如何从UINavigationController的一个页面(index.html) push 到另外一个原生控制器?

分类:HBuilder

个人想法是这样:
// 调用 UIStoryboard 的实例化方法 “storyboardWithName:bundle:”
var storyboard = plus.ios.newObject("UIStoryboard","Main_iPhone",null);
// “instantiateViewControllerWithIdentifier:”
var viewController = plus.ios.invoke(storyboard, "instantiateViewControllerWithIdentifier:","ViewController")
// [self.navigationController pushViewController: viewController animated: YES]
plus.ios.invoke(this.nativeUI, "pushViewController:animated:",viewController,true)

求指正

2016-01-14 22:58 负责人:无 分享
已邀请:
骁骑

骁骑

你可以参考下以下代码,给appliction的delegate添加一个返回UINavigationController的方法,然后用NJS调用这个方法获取UINavigationController对象就可以显示你的storyboard了

// 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);
shiying

shiying

根据以下两个函数的说明,不使用导入类对象的方式,使用以下方式,调用函数:

    var result = plus.ios.invoke("NSDate","date",null);  
    alert(result);

真机联调xcode,会crash; 不联调,在真机上运行的时候,alert弹出的是null.

请问为什么?

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