Jes*_*ica 5 xcode uinavigationcontroller ipad uisplitviewcontroller ios
我在项目中面临一个小问题.我有一个简单的IPad应用程序,在Lanscape方向使用SplitView.MasterViewController是一个tableview,而DetailView是WebView,如下所示:

上图导致以下结果:

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

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

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

除此之外,点击上面tableivew中的任何条目将导致程序崩溃,并在控制台中显示以下消息:
*在声明失败- [UIStoryboardReplaceSegue执行],2013年3月30日/SourceCache/UIKit_Sim/UIKit-2380.17/UIStoryboardBuiltInSegues.m:63 13:59:58.179 19IPadIPad [5806:C07]*终止应用程序由于未捕获的异常'NSInternalInconsistencyException' ,原因:"找不到一个拆分视图控制器祖先'’,在执行分割视图控制器替换赛格瑞(标识符'pushLink’)与目的地'’"***第一掷调用堆栈:(0x217b012 0x16bce7e 0x217ae78 0x1152665 0xa57349 0xa48b99 0xa48c14 0x6b0249 0x6b04ed 0x10ba5b3 0x213a376 0x2139e06 0x2121a82 0x2120f44 0x2120e1b 0x1d587e3 0x1d58668 0x600ffc 0x24bd 0x23e5)的libc ++ abi.dylib:终止叫做抛出一个异常
有人可以调查问题并告诉问题可能在哪里.提前致谢.
在聊天时与用户交谈后,我点击菜单中的导航后,出现的下一件事只是主视图和实际上没有加载splitview.看起来这是问题,但我不知道如何解决这个问题.
ECSlidingView如何与SplitView集成
在收到评论询问ECSlidingView如何连接到项目和SplitView后,我正在更新问题.
我创建了一个名为'MainSplitViewController'的类,它继承自UISplitViewController,并在身份检查器的故事板中将它与splitView连接起来.我也给它了"SplitTop"的故事板ID.
然后在我的InitialViewController中,我将SplitView称为topviewcontroller,如下所示:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];
}
Run Code Online (Sandbox Code Playgroud)
当您在MasterViewController上按下"Menu"按钮时,会出现ECSlidingView菜单,如上图所示.该菜单按钮使用IBAction来显示ECSlidingView:
- (IBAction)revealMenu:(id)sender {
[self.slidingViewController anchorTopViewTo:ECRight];
}
Run Code Online (Sandbox Code Playgroud)
我还在我正在进行的测试项目中使用了 ECSlidingViewController 。我想我能够理解您遇到的问题。
首先,这个问题与 SplitView 或其中的导航控制器没有任何关系,因为您可以删除 SplitView 并且它会正常工作。这个问题与您在 ECSlidingView 库中集成 SplitViewController 的方式完全相关。
在浏览完上面发布的图像后,似乎在开始处理 SplitView 之前将 ECSlidingViewController 添加到项目中。这意味着在您的代码中,导航菜单仍然连接到您的 MasterViewController。它应该连接到 SplitViewController。
正如您更新的问题所示,您正在 InitialView 中调用 SplitView,如下所示:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"SplitTop"];
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码只是将其设置为TopViewController。我检查了 ECSlidingView 库,您会注意到显示的菜单表视图是由 MenuViewController 处理的。这意味着您必须在此类中进行必要的更改。
由于 MainSplitViewController 类的 StoryBoard ID 设置为“SplitTop”,因此您可以将其添加到 MenuViewController 类的 ViewDidLoad 部分,其中定义了绘制菜单项的整个数组。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |