thebiglebowski11
thebiglebowski11

Reputation: 1461

custom tab bar controller not working?

I am trying to build a custom tab bar controller but for some reason the views will not switch... The initial view is loaded properly. Here is my init method:

- (id)initWithNibName:(NSString *)nibNameOrNil 
           bundle:(NSBundle *)nibBundleOrNil
{
AccountViewController *accountViewController = [[AccountViewController alloc]
                    initWithNibName:@"AccountViewController" bundle:nil];
MoreViewController *moreViewController = [[MoreViewController alloc]
                    initWithNibName:@"MoreViewController" bundle:nil];
BarTabViewController *barTabViewController = [[BarTabViewController alloc]
                    initWithNibName:@"BarTabViewController" bundle:nil];
LocationsViewController *locationsViewController = [[LocationsViewController alloc]
                    initWithNibName:@"LocationsViewController" bundle:nil];

self.viewControllers = [NSArray arrayWithObjects:locationsViewController, accountViewController,
                        barTabViewController, moreViewController, nil];

[self.view addSubview:locationsViewController.view];
self.selectedController = locationsViewController;

    return self;
}

Like I said, this will display the selected controller properly, however when the app launches and I try to switch views with the tab bar, the subview just become grey... I have been looking through several tutorials to try to figure out this issue, but it seems that I am doing it exactly the same. I have also checked the IB file to make sure my tabs are connected properly, they are. The following is the code to switch items:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if (item == locationsTabBarItem) {
        UIViewController *locationsController = [viewControllers objectAtIndex:0];
        [self.selectedController.view removeFromSuperview];
        [self.view addSubview:locationsController.view];
        self.selectedController = locationsController;
    }
    else if (item == accountsTabBarItem) {
        UIViewController *accountsController = [viewControllers objectAtIndex:1];
        [self.selectedController.view removeFromSuperview];
        [self.view addSubview:accountsController.view];
        self.selectedController = accountsController;
    }
    else if (item == barTabTabBarItem) {
        UIViewController *barTabController = [viewControllers objectAtIndex:2];
        [self.selectedController.view removeFromSuperview];
        [self.view addSubview:barTabController.view];
        self.selectedController = barTabController;
    }
    else {
        UIViewController *moreController = [viewControllers objectAtIndex:3];
        [self.selectedController.view removeFromSuperview];
        [self.view addSubview:moreController.view];
        self.selectedController = moreController;
    }
}

Upvotes: 1

Views: 1326

Answers (1)

Hiren
Hiren

Reputation: 12780

try With this one

 self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.selectedIndex = 0;

    self.tabBarController.viewControllers = [NSArray arrayWithObjects:locationsViewController, accountViewController,
                        barTabViewController, moreViewController, nil];
    self.tabBarController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self.navigationController pushViewController:delegate.tabBarController animated:YES];

Upvotes: 2

Related Questions