Setting the title of a navigation bar inside a tab bar controller

ghostrider picture ghostrider · Sep 8, 2012 · Viewed 21.2k times · Source

Well in my app I have a navigation controller with a table view, and when pressing a button a tab controller opens. In its first tab, I want the title of the navigation bar to be set.

Here is an image of my storyboard just to make sure we undestand each other.

enter image description here

This is my code that supposed to be working. I had used this code, when trying to open a single view and not a tab controller and it was working properly. So I guess I must change something.

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{       
        SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]];
        myDetViewCont.ski_center = [centers objectAtIndex:indexPath.row];
        UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        [[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"SkiCenterIds"] animated:YES];
        //[self.navigationController pushViewController:myDetViewCont animated:YES]; // "Pushing the controller on the screen"
        [myDetViewCont release]; // releasing controller from the memory
        myDetViewCont = nil;        
    }

Where Skicenter is the name of the class for my first tab and SkiCenterIds is the identifier of my tab controller in storyboard.

Code in Skicenter.m is:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    self.navigationItem.title = ski_center;        
}

but I do not see any title. So what I have done wrong? I have also tried this:

[self.navigationController setTitle:@"Live"];

or

self.title=ski_center;

the ski_center has value because it is printed out normally in the NSLog.

Answer

nithinreddy picture nithinreddy · Nov 17, 2013

Simple!

[self.tabBarController setTitle:@"Title"];