加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 在UISplitView中选择导航后,DetailView消失

发布时间:2020-12-14 19:07:19 所属栏目:百科 来源:网络整理
导读:我在项目中面临一个小问题.我有一个简单的IPad应用程序,在Lanscape方向使用SplitView. MasterViewController是一个tableview,而DetailView是WebView,如下所示: 上图导致以下结果: 之后,我把整个东西放在ECSlidingViewController里面.点击MasterViewControl
我在项目中面临一个小问题.我有一个简单的IPad应用程序,在Lanscape方向使用SplitView. MasterViewController是一个tableview,而DetailView是WebView,如下所示:

上图导致以下结果:

之后,我把整个东西放在ECSlidingViewController里面.点击MasterViewController中的“菜单”按钮将显示侧面菜单,如下所示:

现在我可以点击菜单中的其他选项,让我们说我已经在菜单中点击了“联系人”,关联的视图控制器将出现如下所示:(此视图控制器没有任何详细视图)

到目前为止一切都很好,正是我想要的!现在,当我再次点击“菜单”按钮以显示菜单并再次选择“导航”以显示桌面视图时,问题就开始了.点击“导航”时,它会显示MasterView,但会隐藏DetailView,如下所示:

除此之外,点击上面tableivew中的任何条目将导致程序崩溃,并在控制台中显示以下消息:

* Assertion failure in -[UIStoryboardReplaceSegue perform],/SourceCache/UIKit_Sim/UIKit-2380.17/UIStoryboardBuiltInSegues.m:63
2013-03-30 13:59:58.179 19IPadIPad[5806:c07] *
Terminating app due
to uncaught exception ‘NSInternalInconsistencyException’,reason:
‘Could not find a split view controller ancestor for
”,while performing a split view
controller replace segue (identifier ‘pushLink’) with destination
”’
*** First throw call stack: (0x217b012 0x16bce7e 0x217ae78 0x1152665 0xa57349 0xa48b99 0xa48c14 0x6b0249 0x6b04ed 0x10ba5b3 0x213a376
0x2139e06 0x2121a82 0x2120f44 0x2120e1b 0x1d587e3 0x1d58668 0x600ffc
0x24bd 0x23e5) libc++abi.dylib: terminate called throwing an exception

有人可以调查问题并告诉问题可能在哪里.提前致谢.

更新:

在聊天时与用户交谈后,我点击菜单中的导航后,出现的下一件事只是主视图和实际上没有加载splitview.看起来这是问题,但我不知道如何解决这个问题.

更新:

ECSlidingView如何与SplitView集成

在收到评论询问ECSlidingView如何连接到项目和SplitView后,我正在更新问题.

我创建了一个名为’MainSplitViewController’的类,它继承自UISplitViewController,并在身份检查器的故事板中将它与splitView连接起来.我也给它了“SplitTop”的故事板ID.

然后在我的InitialViewController中,我将SplitView称为topviewcontroller,如下所示:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];

    }

当您在MasterViewController上按下“Menu”按钮时,会出现ECSlidingView菜单,如上图所示.该菜单按钮使用IBAction来显示ECSlidingView:

- (IBAction)revealMenu:(id)sender {

    [self.slidingViewController anchorTopViewTo:ECRight];

}

解决方法

我还在我正在研究的测试项目中使用了ECSlidingViewController.我想我能够解决你遇到的问题.

首先,这个问题与SplitView或其中的导航控制器没有任何关系,因为你可以删除SplitView,它将正常工作.此问题完全与您如何在ECSlidingView库中集成SplitViewController相关联.

在浏览了上面发布的图像之后,在开始处理SplitView之前,似乎已将ECSlidingViewController添加到项目中.这意味着在您的代码中,导航菜单仍然连接到您的MasterViewController.它应该连接到SplitViewController.

由于您的更新问题表明您在InitialView中调用SplitView,如下所示:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];

    }

但上面的代码只是将它设置为TopViewController.我检查了ECSlidingView库,您会注意到MenuViewController处理了显示的Menu表视图.这意味着您必须在此课程中进行必要的更改.

由于MainSplitViewController类的StoryBoard ID设置为“SplitTop”,您可以将其添加到MenuViewController类的ViewDidLoad部分,其中定义了绘制Menu项的整个数组.

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读