我正在使用SplitViewController,它不能成为导航控制器的一部分.我在IBAction上使用SetRootViewController,这很好,但它没有动画.理想情况下,我想使用与导航控制器相同的动画(从左/右滑入),但如果不可能,我想在需要时使用一致的动画.
我已经做了大量研究,并且阅读了很多关于将Tab Bar控制器与Split View Controllers一起使用的信息,但是似乎找不到任何解决方法的提示...
到目前为止,Apple开发者论坛中针对Cocoa Touch的帖子中的标题“在TabBarController内放置SplitViewController”到目前为止给了我最大的指导。
从iOS 8开始,支持将拆分视图控制器嵌入选项卡栏控制器(或您自己的容器视图控制器)中,并且有望“正常工作”。仍然不支持将拆分视图控制器推入导航堆栈。
这似乎违反了Apple文档,其中包括日期为2014年11月的标题为“ Combined View Controller Interfaces”的文章。
您可以使用UIKit框架本身提供的视图控制器,也可以将其与其他视图控制器结合使用,以创建更复杂的接口。但是,当组合视图控制器时,包含的顺序很重要。只有某些安排有效。从孩子到父母的收容顺序如下:
- 内容视图控制器和具有灵活边界的容器视图控制器(例如页面视图控制器)
- 导航视图控制器
- 标签栏控制器
- 分割视图控制器
我有UITabBarController七个标签。其中,五个选项卡导致UISplitViewControllers,两个选项卡导致UINavigationControllers。
这是一些情节提要的屏幕截图,显示了标签栏控制器通向五个拆分视图控制器中的三个...

当我使用self.traitCollection.horizontalSizeClass = UIUserInterfaceSizeClassRegular- 运行设备屏幕的水平(宽度)尺寸为常规(非紧凑型)->在iPad上运行目标时,没问题。所有七个选项卡都显示在底部选项卡栏上,并且所有视图控制器(包括拆分视图控制器)都可以正常工作。
我的问题?
当我使用self.traitCollection.horizontalSizeClass = UIUserInterfaceSizeClassCompact-在设备屏幕的水平(宽度)尺寸为紧凑->在iPhone或iPhone Plus上运行的目标运行目标时,Xcode会出错并冻结应用程序操作。正如预期的那样,IB和iOS设备都具有相同的结果。
错误信息: Split View Controllers cannot be pushed to a Navigation Controller <UIMoreNavigationController: 0x7ffda38b0200>
我知道为什么我收到了错误消息。在水平尺寸类别为“紧凑”的情况下,七个选项卡在屏幕上下降到五个,其中一个(由iOS专门准备)为“更多”选项卡。其余三个选项卡都降级为“更多”选项卡,它是其自己的导航控制器和表视图控制器。我的情节提要正在尝试将拆分视图控制器推入此导航堆栈。
对合法解决方案有什么想法?
objective-c uitabbarcontroller uiviewcontroller uisplitviewcontroller ios