如何以编程方式设置导航栏的标题?
我在视图中有一个导航栏,我想以编程方式更改其导航项目标题。
这是怎么做的?
在你的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对象并将它们添加到导航栏对象堆栈来设置导航栏的初始外观即
- 创build一个导航栏的实例(UINavigationBar)
- 创build导航栏项(UINavigationItem)的一个实例,该实例pipe理要在UINavigationBar对象中显示的button和视图。 请注意,您在此步骤设置标题。
- (可选步骤)将右/左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"