UINavigationController如何设置标题

我有一个控制器/视图的通用项目列表,可以扩展显示自定义列表。清单和导航工作正常..但我不能改变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”为标题:(

在你的UIViewController有一个title属性,它是由NavigationController显示的那个属性。 所以当把一个新的UIViewController推到导航栈上时,将UIViewController的标题设置为合适的。

在你的情况下,它看起来像这样:

 [self setTitle:@"WhateverTitle"]; 

使用

 self.title = @"yourTitle"; 

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

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

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

文档: UIViewController类参考: title属性

迅速

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

从文档 :

宣言
var title: String? { get set }

讨论
将标题设置为描述视图的可读string。 如果视图控制器具有有效的导航项目或制表符项目,则将值分配给此属性会更新这些对象的标题文本。

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