Shruthi
Shruthi

Reputation: 45

how to add tabbarcontroller in a navigation controller

I need to have a tabbar kind of view in a view controller(say view controller 3) which is in navigation stack and will be pushed by another view controller (say view controller 2).

I added tool bar to view controller 3 with many buttons. But managing and switching between views seems difficult.

How can i add a tabbar controller in the middle of navigation stack. please help me out.

Upvotes: 2

Views: 385

Answers (3)

user511
user511

Reputation: 154

There has been some discussion about this design in related questions.

The way I understand your question it's definitely possible though. I am pushing a UITabBarController onto a UIViewController that is embedded in a UINavigationController. I did everything in the interfacebuilder except for the push which I implemented programmatically.

So in ViewController.m I added an action to a button:

- (IBAction)searchForPlacesButtonPressed:(id)sender {
    TabBarController *tc = [[self storyboard] instantiateViewControllerWithIdentifier:@"TabBarController"];
    tc.title = @"Orte";
    tc.tabBar.selectedImageTintColor = [UIColor colorWithRed:(28.0f/255.0f) green:(100.0f/255.0f) blue:(52.0f/255.0f) alpha:1.0f];
    UIBarButtonItem * logo = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_xyz"]]];
    tc.navigationItem.rightBarButtonItem = logo;

    Places *d = [[Places alloc] init];
    for (UIViewController *vc in tc.viewControllers) {
        if ([vc isKindOfClass:[MapViewController class]]) {
            ((MapViewController *)vc).dataHandler = d;
            ((MapViewController *)vc).mapViewDelegate = d;
            vc.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Karte" image:[UIImage imageNamed:@"map"] tag:0];
        }
        else if ([vc isKindOfClass:[TableViewController class]]) {
            ((TableViewController *)vc).dataHandler = d;
            vc.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Liste" image:[UIImage imageNamed:@"eye"] tag:1];
        }
    }
    [self.navigationController pushViewController:tc animated:YES];
}

Using the tabs at the bottom you can switch between viewing the places on a map and listed in a table.

Upvotes: 0

Lokesh Chowdary
Lokesh Chowdary

Reputation: 736

You cnt create tabbar in the middle of view controllers, you can create tab bar structure using custom segment controller. check the link below for creating custom segment controller.

https://www.cocoacontrols.com/search?q=segment

Upvotes: 2

Grzegorz Krukowski
Grzegorz Krukowski

Reputation: 19792

You cannot add TabBar there - tabBar is only designed to be at the bottom. You have to create your own ViewController and add it as subView for navigationViewController and implement whole switching methods.

Upvotes: 1

Related Questions