设置导航栏的标题?

时间:2012-07-02 15:28:49

标签: iphone objective-c ios uiviewcontroller uinavigationbar

我已经尝试了我能想到的一切。

self.navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    self.navigationBar.topItem.title = @"Title";
    self.navigationItem.title = @"Title";
    self.title = @"Title";
    self.navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor];
    self.navigationController.navigationBar.topItem.title = @"Title";
[self.view addSubview:self.navigationBar];

我已经尝试了所有这些,希望能有所作为,但没有一个能够奏效。如何更改此导航栏的标题?这是在UIViewController的init方法中。

4 个答案:

答案 0 :(得分:1)

您需要设置自定义NavigationBar的项目数组。您应该传入一个包含具有指定标题的项目的数组:

UINavigationBar *bar = [[[UINavigationBar alloc] init] autorelease];

UINavigationItem *navItem = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];
bar.items = [NSArray arrayWithObject:navItem];

答案 1 :(得分:1)

这对我来说总是有用的:

self.navigationItem.title = @"Title";

答案 2 :(得分:0)

我不知道你为什么要把它放在init中,通常我宁愿把这段代码放在viewDidLoad中。

但是,您的代码存在问题的是,当您初始化UINavigationBar时,它的items数组中没有任何项目。因此,您实际上是向nil发送消息,这不会导致程序崩溃,但不会执行任何操作。

这就是我要做的。

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [navigationBar setItems:[NSArray arrayWithObject:[[UINavigationItem alloc]initWithTitle:@"Title"]]];
    navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:navigationBar];
}

答案 3 :(得分:0)

如果您正在使用导航控制器,那么<​​/ p>

self.title = @"My Title"; 

应该在iOS 7中完成。