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>0xac20f20>
&
【参考方案1】:
这个错误告诉你你需要知道的一切。视图只能属于最初为其创建的视图控制器。
我猜Engine
是UIViewController
的子类,或者Engine
包含一个视图控制器。在-setTableview:
方法中,我猜您以某种方式将表视图添加到该视图控制器中。
注意:如果您确实需要此表视图成为Engine
的一部分,则需要完全切断与RootViewController
的连接。在实践中,我从未见过这样做过。
附: [super viewDidLoad]
应该是您从 -viewDidLoad
拨打的第一电话。
对更新代码的评论
注意:我认为这不能解决您的问题,但这是设置窗口的正确方法。
不要使用[self.window addSubview:splashController.view]
和[window addSubview:self.splitViewController.view]
。相反,它应该是self.window. rootViewController = splashController
和self.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 错误 - 应用程序不断崩溃的主要内容,如果未能解决你的问题,请参考以下文章