1110
1110

Reputation: 6829

Best practice when combining Tabs with Navigation

I used tabbed application template to start my new iPhone project.
I will have 4 tabs.
And I want to nave navigation bar at the top.
So I added this in AppDelegate:

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    UINavigationController *navigationcontroller = [[UINavigationController alloc] initWithRootViewController:viewController1];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];

And this added navigation bar only at the top of the first ViewController (first tab).
What I want is to add navigation bar for the whole application not just in one view.
This will enable me to jump from one view to another and back across tabs.
So what is the best way to programmatically make one navigation bar for all tab views?

UPDATE
Basically my main question is should I have one navigation bar for all views or each tab should have its own navigation bar?
What is best practice in "iDevelopers" world.

Upvotes: 0

Views: 450

Answers (3)

Durican Radu
Durican Radu

Reputation: 1337

I'd rather have the self.window.rootViewController be a navigationController, and afterwards, just push your tabBarController or

NSMutableArray *viewControllers = [[NSMutableArray alloc] init];

// create someViewController
[viewControllers addObject:someView];
// create someViewController2
[viewControllers addObject:someView2];


UITabBarController *tabController = [[UITabBarController alloc] init];
[tabController setViewControllers:viewControllers];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabController]
self.window.rootViewController = navController;

Upvotes: 1

turbo
turbo

Reputation: 589

You you need navigation bar you have to add UINavigationController as you did for each view controller in tab bar. So self.tabBarController.viewControllers will have all navigation controllers.

Its not good idea to switch across tabs without user intervention.

Upvotes: 0

Valentin Shamardin
Valentin Shamardin

Reputation: 3658

If you want to have navigation bars on each controller, you should to have UINavigationController on each tab of your UITabBarController Look an answer to this question.

Upvotes: 0

Related Questions