UIViewControllerHierarchyInconsistency 错误 - 应用程序不断崩溃

Posted

技术标签:

【中文标题】UIViewControllerHierarchyInconsistency 错误 - 应用程序不断崩溃【英文标题】:UIViewControllerHierarchyInconsistency Error - App keep crashing 【发布时间】:2012-10-22 14:07:48 【问题描述】:

2012-04-18 12:58:07.108 MYiPad[12574:c07] 终止应用程序由于 未捕获的异常 UIViewControllerHierarchyInconsistency,原因:A 视图最多只能与一个视图控制器关联 时间!视图 ;层=;内容偏移:-0,-20> 与 <0xac20f20>

&amp;

【参考方案1】:

这个错误告诉你你需要知道的一切。视图只能属于最初为其创建的视图控制器。

我猜EngineUIViewController 的子类,或者Engine 包含一个视图控制器。在-setTableview: 方法中,我猜您以某种方式将表视图添加到该视图控制器中。

注意:如果您确实需要此表视图成为Engine 的一部分,则需要完全切断与RootViewController 的连接。在实践中,我从未见过这样做过。

附: [super viewDidLoad] 应该是您从 -viewDidLoad 拨打的第一电话。


对更新代码的评论

注意:我认为这不能解决您的问题,但这是设置窗口的正确方法。

不要使用[self.window addSubview:splashController.view][window addSubview:self.splitViewController.view]。相反,它应该是self.window. rootViewController = splashControllerself.window.rootViewController = self.splitViewController

【讨论】:

我编辑了上面的帖子并添加了更多代码,请看一下,让我知道你的想法。谢谢。 不知道我是否正确解释了这一点,但我是否有两个视图控制器指向行中的同一视图.. self.splitViewController.viewControllers=[NSArrayarrayWithObjects:rootNav,detailViewController,nil]; self.splitViewController.delegate=detailViewController; [窗口 addSubview:self.splitViewController.view]; @Sonic 我不确定您要指出什么。 self.splitViewController.viewControllers=[NSArray arrayWithObjects:rootNav,detailViewController,nil] 是一个指向子视图控制器(合法)的控制器。 self.splitViewController.delegate=detailViewController 正在设置委托(合法)。 [window addSubview:self.splitViewController.view] 是我已经评论过的代码。 @Sonic 我认为不会。我仍然猜测问题出在-[Engine setTableview:]。你能发布代码吗?

以上是关于UIViewControllerHierarchyInconsistency 错误 - 应用程序不断崩溃的主要内容,如果未能解决你的问题,请参考以下文章