How to use Navigation Controller inside of UITabBarController with Storyboard on Swift
I'm using swift. I would like to use Navigation inside of TabBar with Storyboard. At first, the first display show up inside of tab menu. But when I move to second display, second display show up without tab menu.
I selected segue type "show (e.g.Push)"
How can I keep displaying tab menu on all views?
Solution 1:
In Interface Builder:
- Create an
UITabBarController
and set it as the initial View Controller. - Create an
UITableViewController
. - Select the
UITableViewController
and go to themenu bar > Editor > Embed in > Navigation Controller
. - Select your
UITabBarController
and CTRL-drag from it to theUINavigationController
. - Choose
Relationship Segue > view controllers
. - Now, any View Controller you will add in the
UINavigationController
stack will be presented in the sameUITabBarController
.
To perform a segue from the first-in-stack UITableViewController
connected to the UINavigationController
, to another ViewController you must of course first create another ViewController, create a segue to it in Interface Builder
, create an identifier for your segue and in your code perform it by calling the appropriate function in Swift like:
optional func performSegueWithIdentifier(_ identifier: String,
sender sender: AnyObject?)
Here's a sample on how your Interface Builder could look like:
Solution 2:
Here's a rough overview on how your Storyboard will look like. You have to use Tab Bar Controller as a rootViewController.
Embed UITableViewController
to a UINavigationController
, so that you always have a back button.
There are endless possibilities for improvement as long as you follow Combined View Controller Interfaces. Here's what a demo will look like with a common tab as you wanted -