UINavigationController如何设置标题

Posted

技术标签:

【中文标题】UINavigationController如何设置标题【英文标题】:UINavigationController how to set title 【发布时间】:2010-10-18 12:15:11 【问题描述】:

我有一个用于通用项目列表的控制器/视图,可以扩展以显示自定义列表。列表和导航工作正常。但我无法更改 UINavigationController 的标题。 在通用控制器中:

- (void)viewDidLoad

    [super viewDidLoad];
    [self.view addSubview: navigationController.view];

- (void)setNavigationTitle: (NSString *)title

    NSLog(@"set title: %@", title); // this works
    self.navigationController.title = title; // Nothing works here

然后,扩展类就可以了..

- (void)viewDidLoad

    [super viewDidLoad];
    [self setNavigationTitle: @"Custom list"];

导航栏仍然有“项目”作为标题:(

【问题讨论】:

你解决了这个问题,你能告诉我应该怎么做吗? “接受”(@willcodejavaforfood)响应为我解决了这个问题。 【参考方案1】:

在您的UIViewController 中有一个title 属性,NavigationController 将显示该属性。因此,当将新的 UIViewController 推送到导航堆栈时,请将 UIViewController 的标题设置为适当的名称。

在你的情况下,它看起来会是:

[self setTitle:@"WhateverTitle"];

【讨论】:

第一个视图没有推送:[self.view addSubview: navigationController.view];我也试过:self.title = @"AAAA"; [self.view addSubview: navigationController.view];并且不起作用 在推送的视图中(当用户选择一个项目时),标题被正确更改 我注意到您没有为导航控制器设置 rootViewController。 navigationController 中的第一个视图控制器称为 rootViewController。您可以使用 self.title = @"xxx" 设置其标题。 我的导航栏没有“rootViewController”:? self.title = @"Title";正在工作【参考方案2】:

对于那些寻找 Swift 解决方案的人:

class CustomViewController: SuperViewController 
  override func viewDidLoad() 
    super.viewDidLoad()
    self.title = "My Custom Title"
  

title 需要在 UIViewController 上设置,而不是在嵌入视图控制器的 UINavigationController 上。

文档:UIViewController Class Reference: title Property

【讨论】:

【参考方案3】:

使用

self.title = @"yourTitle";

【讨论】:

我现在有:NSLog(@"set title: %@", title); self.title = 标题; self.navigationItem.title = 标题; self.navigationController.title = 标题; // 这些都不起作用:/ 在 - (void)viewWillAppear:(BOOL)动画方法中设置标题【参考方案4】:

斯威夫特

title = "whateverTitle"。这是一个UIViewController 实例属性;随时调用。

来自documentation:

声明var title: String? get set

讨论 将标题设置为描述视图的人类可读字符串。如果视图控制器具有有效的导航项或选项卡栏项,则为该属性分配一个值会更新这些对象的标题文本。

【讨论】:

【参考方案5】:

我知道它的旧线程,但想分享这个 在 UIVIewControler 派生类的“init”方法中设置“self.title”, 这对我有用!

【讨论】:

以上是关于UINavigationController如何设置标题的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

如何过渡出父 UINavigationController

如何自定义 UINavigationController?

如何扩展 UIView 过去包含 UINavigationController

如何从 UINavigationController 隐藏 UINavigationBar?

UINavigationController如何设置标题