Swift - TabBarController - > ViewController - > NavigationController

时间:2017-05-22 21:27:26

标签: ios swift uinavigationcontroller uitabbarcontroller segue

我有以下情况:

我有一个带有一些标签的TabBarController(ViewControllers)。

当我在其中一个ViewControllers中时,我点击一个按钮,我想要转到NavigationController并仍然看到tabbar ...

这就是我所做的:

  1. 我创建了一个新的ViewController(DetailViewController)
  2. 我在NavigationController
  3. 中嵌入了这个新的ViewController(DetailViewController)
  4. 我从" viewcontroller创建了一个segue(Show),它嵌入了tabbarcontroller"到了#34;新的navigationcontroller"
  5. 我编码:

    func buttonTapped {
        performSegue(withIdentifier: "shownavicontroller", sender: nil
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {        
        let destinationNavigationController = segue.destination as! UINavigationController
        let targetController = destinationNavigationController.topViewController as! DetailViewController
    }
    
  6. 出了什么问题:

    1. NavigationController从下往上滑动......它应该从左向右滑动
    2. NavigationController中的BackButton缺失
    3. NavigationController中的TabBar缺失...
    4. 任何人都可以帮我解决这个问题吗?

      谢谢和问候!!

2 个答案:

答案 0 :(得分:0)

你做错了。 您不应该直接将UIViewController嵌入到tabBarController中以获得所需的结果。

来自Storybaord,

如果您是从故事板设计应用程序,则应添加UIViewController并将此UIViewController对象嵌入UINavigationController,然后将此NavigationController嵌入UITabBarController }}。因此,如果按下UIViewController上方的按钮,您需要打开另一个UIViewController,而不是从左到右,从左到右打开,并期待顶部栏上的自动后退按钮并隐藏底栏。 然后,您需要在ViewController上方(嵌入NavigationController - >嵌入TabBarController)创建一个Push / Show Segue表单给您打开的新UIViewController。 在调用push / show segue之前,你需要写下波纹线。

self.tabBarController?.hidesBottomBarWhenPushed = true

答案 1 :(得分:-1)

根据你的问题,我相信这就是你所需要的:

enter image description here

enter image description here