以编程方式更改导航栏标题

时间:2009-04-07 21:10:00

标签: objective-c iphone cocoa-touch

我正在使用Xcode Utility模板。在rootViewController.m中有一个部分为所谓的FlipSideView设置导航栏:

(剪断)

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"];

(剪断)

如何以编程方式更改FlipsideViewController类中的导航栏标题?我试过了:

self.navigationItem.title = @"XXXXXX";

没有成功。

6 个答案:

答案 0 :(得分:8)

好的,我花了一些时间在这上面,因为我想为实用程序模板应用程序使用NIB布局的便利性,但我希望能够在不保留大量笔尖的情况下进行国际化。

所以,首先要添加到FlipViewController类:

IBOutlet UINavigationBar *navBarItself;

然后,在IB中,控制 - 从导航栏拖动到文件所有者,并连接到文件所有者的navBarItself。

然后,代码:

- (void) viewWillAppear:(BOOL) animated {

    [super viewWillAppear:animated];

    navBarItself.topItem.title = @"Peace!!";
}

这看起来像魅力

(添加到ViewDidLoad时也可以使用)

(p.s。此处显示的其他答案对我不起作用)

答案 1 :(得分:4)

你什么时候打电话给那条线?我在ViewDidLoad方法中调用相同的行,它工作正常。

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

您如何展示自己的观点?以下是我的一个ViewControllers(tableView)如何呈现另一个(detailView)

[self.navigationController pushViewController:detailController animated:YES];

答案 2 :(得分:0)

Jesse的答案应该有效,但由于你仍然遇到麻烦,首先要检查的地方之一是对navigationItem的引用。

尝试使用该行上的断点调试您的应用,并检查该引用。最有可能的是,呼叫没有发生,因为参考是零。

答案 3 :(得分:0)

如果您的参考号为零,请检查您在IB中的连接。

答案 4 :(得分:0)

IIRC,UIViewController的每个子类都有一个'title'属性,用于保存导航栏标题中显示的文本。因此,在-viewDidLoad或-viewWillAppear:animated:中设置self.title = @"Foobar";应该可以解决问题。

答案 5 :(得分:0)

您可以设置FlipSideViewController的标题以在导航控制器中设置标题,而FlipSideViewController是topViewController。在FlipSideViewController中:

self.title = "Flip Side";

我不确定这个项目是如何布局的,但我认为这就是你所说的。