用编程方式设置标题 UINavigationBar? ?

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

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

那么,这是怎么做到的?

73279 次浏览

我已经使用类似下面这样的代码以编程方式设置了标题:

navBar.topItem.title = @"title";

其中 navBar 被声明为一个链接到导航栏的 IBoutlet Interface Builder 导航栏。这在我的应用程序中很管用; 但是,我没有使用标签栏。

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

使用

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

因为设置 navBar.topItem.title在任何情况下都不会起作用。

我用了以下方法:

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

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

创建 UINavigationBarIBOutlet

navigationBar.topItem.title = @"Title";

希望这个能帮上忙。

如果该类是 UIViewController 的类型,则可以将 title 设置为 viewDidLoad 方法中给定的类型。

    [self setTitle:@"My Title"];

用这个:

    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

请注意,为了标题显示在所有的导航控制器的委托必须设置为导航栏本身或标题将永远不会显示!

还可以在 ViewController 或 TableViewController 下的 ViewDidLoad 中使用

_title = @"Title";

或者

self.title = @"Title";

在 ViewController.m 的 ViewDidLoad 中,

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

输出如下:

enter image description here

试试这个,

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

我在 Swift 5中就是这样做到的

override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Title"
}