Hi I'm new to ios app dev. I've only done tutorials so far that have covered apps with either nav bars or tab bars. Now I want to make an app combining both.
So, say I have an app with a tab bar at the bottom with two tabs: friends and enemies. In each tab i plan to have a running list of who my friends and enemies are, so it will need an addPerson button on the nav bar of each tab.
given that scenario, what would be the proper way to organize my controllers and views and stuff?
would both my tab controller and my nav controller be pointing to the same view controller?
i'm having trouble conceptualizing how my nav controller(2 nav controllers now?) would work in a more complex app.
Here is how to set it up in your Storyboard. The TabBarController
is the main controller. Each item of the TabBarController
has its own NavigationController
:
You probably want to use a TableViewController
for your lists. Here I have shown the TableViewController
as the rootViewController of the NavigationController
.
A quick way to construct this is to delete everything in the Storyboard and then drag out two TableViewControllers
placing one directly above the other. Select both by dragging an outline around them both, and then select Editor->Embed In->Tab Bar Controller
from the menu. Then select each TableViewController
in turn and select Editor->Embed In->Navigation Controller
.
If you want to set the title dynamically, use this function from your UITabBar delegate:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
self.title = viewController.title
print("Should select viewController: \(viewController.title) ?")
return true;
}
Then just set the viewControllers title
in the view controller like you would normally do with a UINavigationBar.