【发布时间】:2012-10-22 14:07:48
【问题描述】:
2012-04-18 12:58:07.108 MYiPad[12574:c07] 终止应用程序由于 未捕获的异常 UIViewControllerHierarchyInconsistency,原因:A 视图最多只能与一个视图控制器关联 时间!视图 ;层=
;内容偏移:{-0,-20}> 与 <0xac20f20>0xac20f20>
&
标签: objective-c xcode
2012-04-18 12:58:07.108 MYiPad[12574:c07] 终止应用程序由于 未捕获的异常 UIViewControllerHierarchyInconsistency,原因:A 视图最多只能与一个视图控制器关联 时间!视图 ;层=
;内容偏移:{-0,-20}> 与 <0xac20f20>0xac20f20>
&
标签: objective-c xcode
这个错误告诉你你需要知道的一切。视图只能属于最初为其创建的视图控制器。
我猜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=[NSArray arrayWithObjects:rootNav,detailViewController,nil] 是一个指向子视图控制器(合法)的控制器。 self.splitViewController.delegate=detailViewController 正在设置委托(合法)。 [window addSubview:self.splitViewController.view] 是我已经评论过的代码。
-[Engine setTableview:]。你能发布代码吗?