How to implement tab bar controller with navigation controller in right way

爱⌒轻易说出口 提交于 2019-11-26 15:09:11
App Dev Guy

Hi you need to embed each view controller that is within the tab bar in a navigation controller of its own. So the flow is like so (HomeVC is embedded in a NavController of it's own):

                                         / --> `NavController` --> `ViewController1`
                                         | --> `NavController` --> `ViewController2`
`HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3`
                                         \--> `NavController` --> `ViewController4`
  1. Go to Editor --> Embed In --> Tab Bar Controller (or Navigation Controller)

To answer your questions:

Each tab of a tab bar controller interface is associated with a custom (different [sic]) view controller. When the user selects a specific tab, the tab bar controller displays the root view of the corresponding view controller, replacing any previous views.

So the Root View Controller of the tab must be adjoined to a Navigation Controller; a navigation view controller must be next inline in order for the View Controller to inherit a Navigation. A Tab Bar switches views to whatever is next inline.

This document will help outline more information about it. https://developer.apple.com/documentation/uikit/uitabbarcontroller

In Swift 2, Xcode 7 has a very handy feature for adding a UINavigationController:

  1. Select the UIViewController that is being used as a "tab" for the UITabBarNavigationController
  2. On the top Xcode menu, select "Editor" ->
  3. "Embed In" ->
  4. "Navigation Controller"

If you want to have something like that:

TabBarController -> Navigation Controller -> View Controller with a Table View -> and from the TableView a MasterDetailView for example:

I had the problem that there were no Navigation in the MasterDetailView (no Back Button to the ViewController with The TableView).

Workaround is:

Set Segue between TableView and MasterDetailView to: Kind: Push (Deprecated)

Run your app...hopefully you will see the Back Button...change the Kind to Show (e.g. Push), run again -> it should work.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!