【发布时间】:2013-03-30 09:26:32
【问题描述】:
我在项目中遇到了一个小问题。我有一个简单的 iPad 应用程序,它在横向方向使用 SplitView。 MasterViewController 是 tableview 而 DetailView 是 WebView 如下所示:
上图结果如下:
在那之后,我把整个东西放在了 ECSlidingViewController 里面。点击 MasterViewController 中的“菜单”按钮将显示如下所示的侧边菜单:
现在我可以点击菜单中的其他选项,假设我在菜单中点击了“联系人”,关联的视图控制器将如下所示:(此视图控制器没有任何详细视图)
到目前为止一切都很好,正是我想要的!!!! 当我再次点击菜单按钮以显示菜单并再次选择“导航”以显示表视图。点击“导航”时,显示MasterView,隐藏DetailView,如下图:
除此之外,点击上面表格中的任何条目都会导致程序崩溃,并在控制台中显示以下消息:
* -[UIStoryboardReplaceSegue perform] 中的断言失败,/SourceCache/UIKit_Sim/UIKit-2380.17/UIStoryboardBuiltInSegues.m:63 2013-03-30 13:59:58.179 19iPadiPad[5806:c07] * 终止应用程序到期 未捕获的异常“NSInternalInconsistencyException”,原因: '找不到拆分视图控制器的祖先 '',在执行拆分视图时 控制器用目的地替换segue(标识符'pushLink') ''' *** 第一次抛出调用堆栈:(0x217b012 0x16bce7e 0x217ae78 0x1152665 0xa57349 0xa48b99 0xa48c14 0x6b0249 0x6b04ed 0x10ba5b3 0x213a376 0x2139e06 0x2121a82 0x2120f44 0x2120e1b 0x1d587e3 0x1d58668 0x600ffc 0x24bd 0x23e5) libc++abi.dylib: 终止调用抛出异常
有人可以调查问题并告诉问题可能出在哪里。提前致谢。
更新:
在与聊天中的用户交谈后,他建议在我点击菜单中的导航后,接下来出现的只是主视图,而拆分视图实际上没有加载。看起来这是问题,但我不知道如何解决。
更新:
ECSlidingView 如何与 SplitView 集成
在收到一条询问 ECSlidingView 如何连接到项目和 SplitView 的评论后,我正在更新问题。
我创建了一个继承自 UISplitViewController 的名为“MainSplitViewController”的类,并将其与身份检查器中故事板中的 splitView 连接起来。我也给了它“SplitTop”的故事板ID。
然后在我的 InitialViewController 中,我将 SplitView 称为 topviewcontroller,如下所示:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];
}
如上图所示,当按下 MasterViewController 上的“菜单”按钮时,会出现 ECSlidingView 菜单。该菜单按钮正在使用 IBAction 来显示 ECSlidingView:
- (IBAction)revealMenu:(id)sender {
[self.slidingViewController anchorTopViewTo:ECRight];
}
【问题讨论】:
-
您正在丢失拆分视图。问题在于与
ECSlidingView的连接。准确告诉我们您是如何管理整个视图层次结构的,然后答案应该相对明显。我怀疑您只是将主视图链接到 ECSlidingView。 -
我更新了ECSlidingView如何连接到整个项目的问题。请看一下
标签: ios xcode ipad uinavigationcontroller uisplitviewcontroller