我正在尝试更改 splitViewController 中的详细信息视图,当我执行 self.detailView.view=view.view; 时出现 UIViewControllerHierarchyInconsistency 异常;我已经控制了 xib 文件中是否有其他视图控制器,并且我还使用了方法 removeFromParentViewController,但我有同样的例外。该错误仅在 iOS 6 中,但不在 iOS 5 中,在 iPad 模拟器中。
1 回答
由于未捕获的异常“UIViewControllerHierarchyInconsistency”而终止应用程序,原因:“一个视图一次最多只能与一个视图控制器相关联!这是错误,view.view 是我要在 splitViewController 中加载的视图,没有其他代码,我只更改拆分中的视图,我使用 removefromparentviewcontroller 因为我想删除与 viewController 的关联删除异常
你的 splitViewController 是 UISplitViewController 的一个实例吗? http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html
如果是这样,那么你做的事情根本上是错误的。UISplitViewController 只是两个视图控制器的容器,一个主视图控制器和一个详细视图控制器。然后由您的视图控制器决定如何处理交互等。removeFromParentViewController 仅在 View Controller Containment 中使用,因此在这里似乎不适用。
阅读上面链接中的文档,看看它是否满足您的需求,但如果我理解,您需要在拆分视图中设置您的视图控制器,而不是您的视图。
做你,你需要做:
// Assume this is initialised correctly
UISplitViewController* splitViewController = [UISplitViewController alloc] init...];
// Assign the two view controller you want to be used in the split view controller
splitViewController.viewControllers = @[masterViewController, detailViewController];
如果这不适用,请提供您的代码,以便制定正确的解决方案。你的描述对你实际在做什么相当模糊。