Bhumika
Bhumika

Reputation: 159

Add new tab dynamically in IOS

In Tab bar Controller, Initially I had added 3 tab bar items in it.After successful login, I need to add one more item dynamically in my current Tab bar Controller . Is it possible to add dynamically ? Below is the code i have tried but its not working.

 if (AppContext.loginUser.userId!=nil) {
        UITabBarItem *tabBarItem4;// = [tabBar.items objectAtIndex:3];
        tabBarItem4.selectedImage = [[UIImage imageNamed:@"SelectedProfileTab"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
        tabBarItem4.image = [[UIImage imageNamed:@"Profiletab"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
        tabBarItem4.title = @"Profile";
        tabBarItem4.tag =4;

        ProfileVC *profile = loadViewController(TabbarSB, VC_Profile);

        UINavigationController *nv=[[UINavigationController alloc] initWithRootViewController:profile];

        NSMutableArray *arrayOfTabBars=[AppContext.mainTabbar.viewControllers mutableCopy];
        [arrayOfTabBars addObject:nv];


       // [AppContext.mainTabbar setViewControllers:nil];

        [AppContext.mainTabbar setViewControllers:arrayOfTabBars];


        //AppContext.mainTabbar.viewControllers = arrayOfTabBars;
      // [self.tabBarController.tabBarController addChildViewController:profile];

    }

Upvotes: 1

Views: 1020

Answers (1)

kientux
kientux

Reputation: 1792

You can do that programmatically:

if (AppContext.loginUser.userId!=nil) {
    // First, create your view controller
    ProfileVC *profile = loadViewController(TabbarSB, VC_Profile);

    // then embed it to a navigation controller
    // this is not required, only if you need it
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:profile];

    // Get viewControllers array and add navigation controller
    NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];
    [viewControllers addObject:nav];

    // Set back the array
    [self.tabBarController setViewControllers:viewControllers];

    // Create tab bar item for ProfileVC
    profile.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:image selectedImage:selectedImage];
}

Upvotes: 1

Related Questions