views:

3954

answers:

4

Hey all. I'm still pretty new to iPhone development, and I'm having a bit of trouble figuring out how to change the title of my Navigation Bar. On another question on this site somebody recommended using :

viewController.title = @"title text";

but that isn't working for me...Do I need to add a UINavigationController to accomplish this? Or maybe just an outlet from my UIViewController subclass? If it helps, I defined the navigation bar in IB and I'm trying to set its title in my UIViewController subclass. This is another one of those simple things that gives me a headache. Putting self.title = @"title text"; in viewDidLoad and initWithNibName didn't work either. Anybody know what's happening and how to get it happening right?

Thanks!

+1  A: 

if you are doing it all by code in the viewDidLoad method of the UIViewController you should only add self.title = @"title text";

something like this:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

you could also try self.navigationItem.title = @"title";

also check if your navigationItem is not null and if you have set a custom background to the navigationbar check if the title is set without it.

SorinA.
@SorinA,Thanks. It is the better way to give the title of navigation bar.
RRB
A: 

I guess you need a dynamic title that is why you don't set it in IB.

And I presume your viewController object is the one specified in the NIB?

Perhaps trying setting it to a dummy value in IB and then debug the methods to see which controller has the dummy value - assuming it appears as the title...

Chris Kimpton
+7  A: 

The view controller must be a child of some UINavigationController for the .title property to take effect. If the UINavigationBar is simply a view, you need to push a navigation item containing the title, or modify the last navigation item:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

or

bar.topItem.title = @"title text";
KennyTM
Wow. I've seriously spent the last hour browsing through forums and documentation trying to figure this out, and I'd convinced myself that it would be more complex than this. This code is so simple and I didn't have to re-fiddle anything in IB. Perfect! KennyTM, you rock. If I recall, you also answered my NSDate question and set me to researching dictionaries. You are my new favorite person on this site. Thanks A LOT for all your help!
Arthur Skirvin
A: 

In my navigation based app I do this:

myViewController.navigationItem.title = @"MyTitle";
testing