79

我有一个标签栏应用程序,每个标签都有不同的视图。每个视图都有一个 UINavigationBar,在 Interface Builder 上设置了标题。我想根据 ViewDidLoad 方法中的一个子句更改标题,所以如果 x { 更改标题 }。

我试过self.title = @"title"了,但这会改变标签栏项目本身的标题。

那么,这是如何做到的呢?

4

11 回答 11

213

我已经使用如下代码以编程方式设置了标题:

navBar.topItem.title = @"title";

其中 navBar 被声明为 IBOutlet UINavigationBar 链接到界面构建器中的导航栏。这在我的应用程序中有效;但是,我没有使用标签栏。

如果 navBar.topItem 是标签栏项目,我看不到您可以更改出现在导航栏上的标题而不更改标签栏项目上的标题的方法,因为导航栏的 topItem 和标签栏项目是同一个对象。

于 2010-09-09T22:10:44.933 回答
73

采用

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

因为设置navBar.topItem.title并非在所有情况下都有效。

于 2011-09-12T22:36:22.517 回答
25

用这个 :

    CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];

    UINavigationItem *navItem = [UINavigationItem alloc];
    navItem.title = @"Your Title";

    [navBar pushNavigationItem:navItem animated:false];

[self.view addSubView:navBar]; 

或者

self.tableView.tableHeaderView = navBar; etc
于 2013-02-14T18:55:18.097 回答
11

如果该类是 UIViewController 类型,那么您可以按照 viewDidLoad 方法中的给定设置标题。

    [self setTitle:@"My Title"];
于 2012-10-18T09:27:17.883 回答
7

在 ViewController.m 的 ViewDidLoad 中只写,

self.navigationItem.title=@"Hello World";

这是输出:

在此处输入图像描述

于 2014-11-08T06:54:36.093 回答
6

创建IBOutletUINavigationBar

navigationBar.topItem.title = @"Title";

希望这可以帮助。

于 2012-03-22T10:35:21.193 回答
4

我使用了以下内容:

self.navigationController.navigationBar.topItem.title = @"Title";

但是,我还必须在调度块中调用它,因为在没有它的 viewDidLoad 中调用它时它不会更改标题。

于 2012-02-16T03:32:12.523 回答
2

请注意,为了让标题全部显示,导航控制器的委托必须设置为导航栏本身,否则标题将永远不会显示!

于 2013-04-18T02:18:52.533 回答
1

您也可以使用在 ViewController 或 TableViewController 下的 ViewDidLoad 中设置标题

_title = @"Title";

或者

self.title = @"Title";
于 2014-09-28T18:30:46.293 回答
1

我在 Swift 5 中实现了这种方式

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "Title"
}
于 2019-08-21T21:53:10.677 回答
0

试试这个,

self.navigationItem.title = @"Your title";
于 2017-01-11T06:09:56.037 回答