Ios 在UISplitView中使用UITabBarController

Ios 在UISplitView中使用UITabBarController,ios,swift,uitabbarcontroller,uisplitviewcontroller,Ios,Swift,Uitabbarcontroller,Uisplitviewcontroller,我知道以前有人问过这个问题,但没有一个答案对我有用,所以如果有新的想法出现,我会再问一次 我在通用应用程序中有UISplitView控制器,在主视图控制器中我需要TabBarController,如下所示 我的问题是,在这种配置下,当我点击单元格时,DetailViewController确实会显示出来,但它从底部滑动,而不是从右侧滑动,并且没有后退按钮。这让我相信它不在正确的导航堆栈上 有些事情我尝试了,但没有成功(我不会接受答案!) 将NavigationController置于TabBa

我知道以前有人问过这个问题,但没有一个答案对我有用,所以如果有新的想法出现,我会再问一次

我在通用应用程序中有UISplitView控制器,在主视图控制器中我需要TabBarController,如下所示

我的问题是,在这种配置下,当我点击单元格时,DetailViewController确实会显示出来,但它从底部滑动,而不是从右侧滑动,并且没有后退按钮。这让我相信它不在正确的导航堆栈上

有些事情我尝试了,但没有成功(我不会接受答案!)

  • 将NavigationController置于TabBarController之前:
  • 这个解决方案提出了两个主要问题。第一个是过渡时导航栏右侧的一个非常难看的黑色阴影。第二个是在第二次点击单元格后,返回按钮停止工作

  • 添加代码

    func splitViewController(splitViewController: UISplitViewController, showDetailViewController vc: UIViewController, sender: AnyObject?) -> Bool {
    if splitViewController.collapsed {
           let tabBarController = splitViewController.viewControllers.first as! UITabBarController
           let selectedNavigationViewController = tabBarController.selectedViewController as! UINavigationController
    
           // Push view controller
           var viewControllerToPush = vc
           if let navController = vc as? UINavigationController {
               viewControllerToPush = navController.topViewController
           }
    
      selectedNavigationViewController.pushViewController(viewControllerToPush, animated: true)
    
           return true
       }
    
       return false
    }
    
  • 这对我来说没有任何作用,但如果我多次旋转设备,则会出现错误:

    <Error>: CGImageCreate: invalid image size: 0 x 0.
    
    :CGImageCreate:无效的图像大小:0 x 0。
    

    我不相信这是不可能的。主视图和详细视图可以是任何视图控制器类,因此为什么tabbarviewcontroller不工作?

    为什么不先使用UITabBarController?UITabBarController->SplitViewControllers。这是用户通常期望的,因为苹果的人机界面指南和其他应用程序都推荐了它。视觉效果不一样。Facebook Messenger也有我想要的行为。