更新: iOS 6 beta 1中不再出现
我目前正在使用新的iOS 5SDK调整现有的iOS 4应用程序。当我在一个阅读Youtube视频的模式视图控制器中呈现一个UIWebView时,我发现了一个新的崩溃。
开始阅读视频没有问题,但当我尝试将其设置为全屏时,我得到了以下异常:
Exception: UIViewControllerHierarchyInconsistency,
child view controller:<UIViewController: 0x6aef180>
should have parent view controller:<WebViewController: 0x6a706c0>
but requested parent is:<MPInlineVideoViewController: 0x6ae5d40>
下面是我如何在我的主视图控制器中实例化和呈现我的模式视图控制器:
- (IBAction)buttonReleased:(id)sender
{
WebViewController *webVC = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
webVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
webVC.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:webVC animated:YES];
}
我使用UIModalPresentationPageSheet作为modalPresentationStyle,当我将这个值设置为UIModalPresentationFullScreen时,错误不再发生。
在我的模式WebViewController中,我是如何加载我的Youtube视频的:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=bDlm3eLRut0"]]];
}
对这个问题有什么想法吗?如果需要的话,我可以提供一个完整的示例代码来隔离这个崩溃。
谢谢!
发布于 2011-11-03 15:36:39
这些控制台警告是由于加载了Mac上的音频组件造成的。它是一个模拟器,而不是一个模拟器-模拟器仍然是一个Mac OS X应用程序,所以当使用音频时,它加载Mac应用程序加载的所有音频kext。当我在模拟器中为我的Bandcamp应用程序Kumbaya测试音频流时,就会发生这种情况。如果你不想看到这些问题,可以在设备上进行测试。
如果你愿意,你可以用以下命令包装你的音频方法:
#if ! TARGET_IPHONE_SIMULATOR
#endif
在模拟器中禁用它们。
发布于 2012-03-31 13:41:39
我们基本上通过实现我们自己的模式视图转换解决了这个问题。这实际上很容易做到;我花了大约4个小时就完成了。
如果你以全屏的方式呈现它,你也可以避免崩溃。工作表、表单工作表或页面工作表都是崩溃的原因。
发布于 2011-12-15 23:26:04
我在应用程序中也遇到了同样的问题。事实证明,我在UIWindow
中设置了错误的rootViewController
。
我的NIB中有以下视图控制器层次结构:
Navigation Controller
+- Main View Controller
UIWindow
的rootViewController
插座设置为Main View Controller
,而不是Navigation Controller
。一旦我将插座更改为Navigation Controller
,UIViewControllerHierarchyInconsistency
异常就不再发生。
https://stackoverflow.com/questions/7905258
复制相似问题