我有一个应用程序,包括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.这引起了一些问题.
由于未捕获异常'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)