小编Dov*_*er8的帖子

iOS ViewController层次结构随Unity 4.6.5和Vuforia 4.2更新而更改

我有一个应用程序,包括Xcode Storyboard UI和一个托管的Unity3D/Vuforia项目的其中一个视图.我之前使用的是Unity 4.6.2和Vuforia 3.0.9,并使用以下方法实现了UnityAppDelegate子类,这使我可以执行此操作.

-(void)createViewHierarchyImpl
{
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AR" bundle:nil];
    PPARStartViewController * helloVC = (PPARStartViewController *)[sb instantiateViewControllerWithIdentifier:@"StartController"];

    self.navController = [[UINavigationController alloc] initWithRootViewControllier:helloVC];
    self.navController.navigationBarHidden = YES;

    _rootController = self.navController;
    _rootView = self.navController.view;

}
Run Code Online (Sandbox Code Playgroud)

我还写了一个UINavigationController扩展来处理视图堆栈中的旋转变化(根据方向加载不同的图像).

但是,由于64位要求将应用程序提交到App Store,我不得不更新我的应用程序以使用Unity3D 4.6.5和Vuforia 4.2.这引起了一些问题.

  1. 上面的createViewHierarchyImpl方法不再适用于该状态.它抛出了一个运行时错误:

由于未捕获异常'UIViewControllerHierarchyInconsistency'而终止应用程序,原因:'子视图控制器:PPARStartViewController:0x17dc3070应该有父视图控制器:UnityDefaultViewController:0x1c083200但实际父节点是:UINavigationController:0x17dc3820'

我不得不将其更改为以下内容:

    -(void)createViewHierarchyImpl
    {
        _rootController = [[UIViewController alloc] init];
        _rootView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        _rootController.view = _rootView;

        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AR" bundle:nil];
        PPARStartViewController * helloVC = (PPARStartViewController *)[sb instantiateViewControllerWithIdentifier:@"StartController"];

        self.navController = [[UINavigationController alloc] initWithRootViewController:helloVC];
       [_rootView addSubview:self.navController.view]; …
Run Code Online (Sandbox Code Playgroud)

objective-c unity-game-engine ios vuforia

5
推荐指数
1
解决办法
639
查看次数

标签 统计

ios ×1

objective-c ×1

unity-game-engine ×1

vuforia ×1