我在项目内部遇到了一个小问题。我有一个简单的iPad应用程序,该应用程序在Lanscape方向上使用SplitView。 MasterViewController是一个表 View ,而DetailView是WebView,如下所示:
上图显示以下结果:
之后,我将整个内容放入ECSlidingViewController中。点击MasterViewController中的“菜单”按钮,将显示侧面菜单,如下所示:
现在,我可以点击菜单中的其他选项,假设我在菜单中点按了“联系人”,相关的 View Controller 将显示如下:(此 View Controller 没有任何detailview)
到目前为止,一切都很好,而且正是我想要的!!! 现在,当我再次点击菜单按钮以显示菜单并再次选择“导航”以显示表格 View 时,问题就开始了。轻按“导航”后,将显示MasterView,但隐藏DetailView,如下所示:
除此之外,点击上面表格中的任何条目都将导致程序崩溃,并在控制台中显示以下消息:
有人可以调查问题并指出问题可能出在哪里。提前致谢。
更新:
在与聊天的用户交谈后,该用户建议我点击菜单中的导航后,接下来出现的只是主 View ,而实际上未加载splitview。看起来这就是问题所在,但我不知道该如何解决。
更新:
ECSlidingView如何与SplitView集成
我收到评论询问ECSlidingView如何连接到项目和SplitView后更新问题。
我创建了一个从UISplitViewController继承的名为“MainSplitViewController”的类,并将其与身份检查器中的 Storyboard 中的splitView连接起来。我还给了它“SplitTop”的 Storyboard 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];
}
最佳答案
我还在正在进行的测试项目中使用过ECSlidingViewController。我想我能够理解您遇到的问题。
首先,此问题与SplitView或其中的导航 Controller 没有任何关系,因为您可以删除SplitView,它将正常工作。此问题与您如何在ECSlidingView库中集成SplitViewController的方式完全相关。
浏览完上面发布的图像之后,似乎在开始使用SplitView之前,已将ECSlidingViewController添加到项目中。这意味着在您的代码中,导航菜单仍连接到您的MasterViewController。它应该连接到SplitViewController。
由于您的更新问题提示您正在InitialView中调用SplitView,如下所示:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];
}
但是上面的代码只是将其设置为TopViewController。我已经检查了ECSlidingView库,您会注意到显示的Menu表 View 是由MenuViewController处理的。这意味着您必须在该类中进行必要的更改。
当您将MainSplitViewController类的StoryBoard ID设置为“SplitTop”时,您可以将其添加到MenuViewController类的ViewDidLoad部分中,在此定义了绘制菜单项的整个数组。
希望能有所帮助。
关于ios - 在UISplitView中选择导航后,DetailView消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15716962/