如何通过编程设置导航栏的标题?

94
我在一个视图中有一个导航栏,我希望能够通过编程来更改其导航项标题。
如何实现?
12个回答

227

在你的UIViewController中

self.navigationItem.title = @"The title";

是的,我会选择这个,因为它只更新navigationItem的标题而不是toolbarItem的标题。 - Prakash Raman

34

Swift 3 版本:

如果您在没有导航控制器的情况下使用导航栏,则可以尝试以下方法:

navigationBar.topItem?.title = "Your Title"

求助之希望。


11

在viewDidLoad中

  self.title = @"Title";

3
我的两分钱 :) 这个方法可行,但如果视图控制器是工具栏控制器的一部分,则工具栏项的标题也会被更新。 - Prakash Raman

7
将以下代码写在viewDidLoad中,或者更好的选择是写在initWithNibName:下面。
  self.navigationItem.title = @"title";

谢谢。

7

来自苹果文档

最常用的使用导航栏的方法是使用导航控制器。您也可以将导航栏作为应用程序中的独立对象使用。

因此,如果您有一个UINavigationController,您只需按照所有先前答案中所述设置导航栏的标题即可。

self.navigationItem.title = @"title";

如果您有一个独立的导航栏,是在UIViewController对象中通过编程方式创建的,则必须通过创建适当的UINavigationItem对象并将其添加到导航栏对象堆栈中来设置导航栏的初始外观。

  1. 创建导航栏实例(UINavigationBar)
  2. 创建导航栏项目实例(UINavigationItem),管理要显示在UINavigationBar对象中的按钮和视图。请注意,在此步骤中设置标题。
  3. (可选步骤)向导航栏项目添加右/左按钮(UIBarButtonItem实例)。

Objective-C代码示例:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

如果需要 Swift 版本的独立导航栏,请查看this answer


6

在你的UIViewController的viewDidLoad方法中

self.navigationItem.title = "The title";  //In swift 4

或者

你可以只

self.title = "The title"

这将会解决问题。

你还可以将上述语句放在应用程序委托中以实现全局复制。


6
您可以使用以下方法:

您还可以使用

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

你可以这样做,但是为什么要这样呢?视图控制器并不知道它在顶部,所以这似乎容易引起混淆。self.title 更加精确。 - Robin Daugherty

3

这段代码对我来说没有用

self.navigationItem.title = @"Title here";

但是这个有效。
self.title = "Title Name"

谢谢,我查了很多解决方案,但只有这个对我有效。 - Naval Hasan

0

在 ViewDidLoad 方法中使用它

格式:

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

例子:

self.navigationItem.title = @"Title here";

0
非常重要的提示:请确保在父视图控制器的viewDidLoad方法或故事板中的父级导航栏中进行上述更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接