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

Dou*_*ull 78 iphone view uinavigationbar ios

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

这是怎么做到的?

arc*_*ght 188

在你的UIViewController中

self.navigationItem.title = @"The title";
Run Code Online (Sandbox Code Playgroud)


Jer*_*ome 25

Swift 3版本:

如果您使用没有导航控制器的导航栏,那么您可以尝试这样做:

navigationBar.topItem?.title = "Your Title"
Run Code Online (Sandbox Code Playgroud)

希望得到帮助.


Mad*_*dhu 11

在viewDidLoad中

  self.title = @"Title";
Run Code Online (Sandbox Code Playgroud)

  • 我的两分钱:)这行得通,尽管vewcontroller是工具栏控制器的一部分。然后,toolbaritem的标题也会被更新。 (2认同)

Wae*_*air 7

来自Apple文档:

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

所以,如果您有一个UINavigationController,那么您需要做的就是设置导航栏的标题(如之前的所有答案中所述)

self.navigationItem.title = @"title";
Run Code Online (Sandbox Code Playgroud)

但是如果你有一个在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];
Run Code Online (Sandbox Code Playgroud)

对于Swift版本的独立导航栏,请查看此答案.


Nik*_*sal 6

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

  self.navigationItem.title = @"title";
Run Code Online (Sandbox Code Playgroud)

谢谢.


Nic*_*der 6

在你的 UIViewController 的 viewDidLoad 中

self.navigationItem.title = "The title";  //In swift 4
Run Code Online (Sandbox Code Playgroud)

或者

你可以

self.title = "The title"
Run Code Online (Sandbox Code Playgroud)

会成功的

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


Sur*_*put 5

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Run Code Online (Sandbox Code Playgroud)