Xcode 4.5 黑屏或异常:“一个视图一次只能与一个视图控制器关联!”

Posted

技术标签:

【中文标题】Xcode 4.5 黑屏或异常:“一个视图一次只能与一个视图控制器关联!”【英文标题】:Xcode 4.5 Black Screen or Exception: 'A view can only be associated with at most one view controller at a time!' 【发布时间】:2012-10-02 03:37:05 【问题描述】:

在升级到 Xcode 4.5 之前,我有一个现有的 iPhone 应用程序在 Xcode 4.0 中运行良好。升级后,现在我在 iPhone/iPad 4.3 模拟器中运行时出现黑屏,在运行 iPhone/iPad 6.0 模拟器时出现以下异常。

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View <CCGLView: 0x8c7f380; frame = (0 0; 320 480); layer = <CAEAGLLayer: 0x8c7f670>> is associated with <CCDirectorDisplayLink = 0x994c7f0 | Size: 320 x 480, view = <CCGLView: 0x8c7f380; frame = (0 0; 320 480); layer = <CAEAGLLayer: 0x8c7f670>>>. Clear this association before associating this view with <RootViewController: 0x8c7ef00>.'

该应用程序使用 Cocos2D 2.0,根据网上找到的教程非常简单。没有 XIB 文件。一切都以编程方式完成。

这些是在 6.0 模拟器中导致异常的行(来自 ios6TestAppDelegate.m):

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
[enter link description here][1]viewController.wantsFullScreenLayout = YES;

如果这些行被注释掉,那么 6.0 模拟器也会显示黑屏,而不是常规的菜单屏幕。

我在网上搜索了这方面的解决方案并尝试了很多方法,但都无法取得进展。我对 iPhone 编程相当陌生(虽然对一般编程并不陌生),而且我真的在为此苦苦挣扎。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

首先,删除

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;

然后替换

[window setRootViewController:viewController];

if( ! [director enableRetinaDisplay:YES] )
    CCLOG(@"Retina Display Not supported");

// Create a Navigation Controller with the Director
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:director];
navController.navigationBarHidden = YES;
NSString *reqSysVer = @"6.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)

    [window setRootViewController:navController];
 else

    [window addSubview: navController.view];

应该这样做!

【讨论】:

效果很好!非常感谢。在被卡住了大约一周后,我现在可以继续前进了。

以上是关于Xcode 4.5 黑屏或异常:“一个视图一次只能与一个视图控制器关联!”的主要内容,如果未能解决你的问题,请参考以下文章

解决“vmware15虚拟机启动造成win10黑屏或自动注销“问题

Qt for Android 启动短暂的黑屏或白屏问题如何解决?

Xcode 5,xib 本地化导致手机黑屏

VysorPro助手

Android启动黑屏白屏解决方案

Android项目启动时短暂的黑屏白屏处理