如何以编程方式设置导航栏的标题?

我在视图中有一个导航栏,我想以编程方式更改其导航项目标题。

这是怎么做的?

在你的UIViewController

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

viewDidLoad写下面的代码,或者可能会更好,在initWithNibName:initWithNibName:

  self.navigationItem.title = @"title"; 

谢谢。

Swift 3版本:

如果你使用没有导航控制器的导航栏,那么你可以试试这个:

 navigationBar.topItem?.title = "Your Title" 

希望得到帮助。

在viewDidLoad中

  self.title = @"Title"; 

来自Apple文档 :

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

所以如果你有一个UINavigationController,你必须做的所有事情来设置导航栏的标题(正如所有以前的答案中所解释的)

 self.navigationItem.title = @"title"; 

但是,如果在UIViewController的一个对象中有编程创build的独立导航栏,则必须通过创build适当的UINavigationItem对象并将它们添加到导航栏对象堆栈来设置导航栏的初始外观即

  1. 创build一个导航栏的实例(UINavigationBar)
  2. 创build导航栏项(UINavigationItem)的一个实例,该实例pipe理要在UINavigationBar对象中显示的button和视图。 请注意,您在此步骤设置标题。
  3. (可选步骤)将右/左button(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版本,请查看这个答案 。

 You can also use 👇🏻 [self.navigationController.navigationBar.topItem setTitle:@"Titlet"]; 

在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"; 

非常重要的注意事项:确保在父视图控制器的viewDidLoad方法中进行上述更改,或者在情节提要中的父级导航栏

有时你可能会得到一个更新标题的例子,并且它不会产生任何效果,这可以是当你在topItem上有一个自定义视图的topItem因此你可能想要像这样更新它: (self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"