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


Answers:


204

在您的UIViewController中

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

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

30

Swift 3版本:

如果使用不带导航控制器的导航栏,则可以尝试以下操作:

navigationBar.topItem?.title = "Your Title"

希望能有所帮助。


11

在viewDidLoad中

  self.title = @"Title";

3
我的两分钱:)这行得通,尽管vewcontroller是工具栏控制器的一部分。然后,toolbaritem的标题也将更新。
Prakash Raman

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版本,请查看此答案



6

您也可以使用👇🏻

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

2

该代码对我不起作用

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

但这行得通。

self.title = "Title Name"

2

在您的UIViewController的viewDidLoad中

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

要么

你可以

self.title = "The title"

会成功的

您还可以将以上语句放入应用程序委托中以进行全局复制。


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方法或情节提要中的父导航栏上进行了上述更改。


0

有时,您可能会遇到一种情况,即正在更新标题,但没有引起任何影响,这可能是由于您具有自定义视图,topItem因此您可能希望像这样进行更新:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.