【发布时间】:2015-01-20 17:27:55
【问题描述】:
我在我的应用程序中使用 UISplitViewController 和 Size Classes。 我一直在 iPad 上显示 Master 和 Detail 控制器 (UISplitViewControllerDisplayModeAllVisible)
我按照这个出色的 SplitViewController tutorial 设置了我的故事板
所以我的应用支持 iOS 7 和 8。一切正常,但我在使用 iOS8 的 iPhone 上遇到了一个小问题:(这在 6+ 环境中当然不会发生)
我想以编程方式从细节控制器中显示主控制器。 我可以这样做:
[self showViewController:[self parentController] sender:self]; //Parent Controller is Master Controller
但这会导致主控制器被推到细节控制器的顶部,导致导航栏的后退按钮停止工作。
如果我使用:
[[self navigationController] popToViewController:[self parentController] animated:YES]; // This works on iPhones with iOS7
应用程序崩溃:'NSInternalInconsistencyException',原因:'无法获取弹出视图控制器。'(我也尝试了 popToRoot...没有任何反应。)
调试代码发现SplitViewController.viewControllers只返回一个NavigationController,里面有Detail控制器,所以Master不在Navigation Controller里面,也不是根。
但是如果我按下导航栏的后退按钮,它会弹出动画模拟 Master 是 root。
我假设这一切都与 iOS8 有关,并且对于 iPhone 6+,您可以在横向模式下同时看到 Master 和 Detail,因此操作系统不再将它们都保留在 NavigationController 中。
但我的问题是我如何以编程方式从 Detail 弹出到主控制器?
【问题讨论】:
标签: objective-c xcode ios8 uisplitviewcontroller