UINavigationController如何设置标题

时间:2010-10-18 12:15:12

标签: ios uinavigationcontroller

我有一个通用的项目列表的Controller / View,可以扩展以显示自定义列表。列表和导航工作正常..但我无法更改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"];
}

navigationBar仍然以“Item”作为标题:(

5 个答案:

答案 0 :(得分:57)

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

在您的情况下,它看起来像是:

[self setTitle:@"WhateverTitle"];

答案 1 :(得分:7)

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

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

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

文档:UIViewController Class Reference: title Property

答案 2 :(得分:5)

使用

self.title = @"yourTitle";

答案 3 :(得分:4)

夫特

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

来自documentation

  

<强>声明
  var title: String? { get set }

     

<强>讨论
  将标题设置为描述视图的人类可读字符串。如果视图控制器具有有效的导航项或制表符项,则为此属性指定值会更新这些对象的标题文本。

答案 4 :(得分:0)

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