Thursday, March 8, 2012

How to set the Navigation Bar Color of the Tab Bar Configure Menu


alt text



As you can see the view I need to change is the provided view to customize the tabbar order. I want to change the color of the navigation bar (displaying "Konfigurieren" which means "Configure"), I already found out how to change the color of the "More"-Navigation Controller, but not this one. Can anybody help me with that?


6 comments:

  1. Use int AppDelegate

    tabBarController.moreNavigationController.navigationBar.tintColor = [UIColor blackColor];

    ReplyDelete
  2. I think what you are looking for is this (to do when you create your navigation controller, typically in your app delegate):

    UINavigationController *navigationController;
    ...
    navigationController.navigationBar.tintColor = [UIColor blackColor];

    ReplyDelete
  3. Can be easier (use in tab bar delegate):

    - (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers {
    id modalViewCtrl = [[[tabBarController view] subviews] objectAtIndex:1];
    if([modalViewCtrl isKindOfClass:NSClassFromString(@"UITabBarCustomizeView")] == YES)
    ((UINavigationBar*)[[modalViewCtrl subviews] objectAtIndex:0]).tintColor = [UIColor redColor];
    }

    ReplyDelete
  4. Its Surely gonna work! :-)

    self.navigationController.navigationBar.tintColor = [UIColor blackColor];

    ReplyDelete
  5. Building off of the answer given by user486217, this may be even more defensively-coded:


    id modalViewCtrl = [controller.view.subviews objectAtIndex:1];
    if([modalViewCtrl isKindOfClass:NSClassFromStrin(@"UITabBarCustomizeView")] == YES) {
    id navigationBar = [[modalViewCtrl subviews] objectAtIndex:0];
    if ([navigationBar isKindOfClass:[UINavigationBar class]]) {
    ((UINavigationBar*)navigationBar).tintColor = [UIColor redColor];
    }
    }}

    ReplyDelete
  6. I was able to change the color of the Configure NavBar like this:


    Create a new class that inherits from UITabBarController.
    Implement this method:

    -(void)beginCustomizingTabBar:(id)sender
    {
    [super beginCustomizingTabBar:sender];

    // Get the new view inserted by the method called above
    id modalViewCtrl = [[[self view] subviews] objectAtIndex:1];

    if([modalViewCtrl isKindOfClass:NSClassFromString(@"UITabBarCustomizeView")] == YES)
    {
    UINavigationBar* navBar = [[modalViewCtrl subviews] objectAtIndex:0];

    [navBar setBarStyle:UIBarStyleBlackTranslucent];
    [navBar setTranslucent:YES];
    }
    }

    ReplyDelete