设置在Interface Builder中创build的导航栏的标题

我有一个模式视图控制器的视图来自XIB。 我希望它具有与我的其他导航应用程序相同的外观和感觉,但是它不是推送到导航堆栈的视图,而是以模态方式呈现的。 我拖入一个UINavigationBar,并使其成为一个出口,但是它没有标题属性来设置。 我有两个可以调出这个模式视图的字段,我想根据哪个模式视图创build不同的标题。

UINavigationBarpipe理一堆UINavigationItem ,就像一个UINavigationControllerpipe理器,一堆UIViewController 。 要设置直接可见的内容,您应该使用pushNavigationItem:animated:setItems:animated:使用视图控制器的导航项,以使该栏反映出来。

例如:

 self.navigationItem.title = @"A custom title"; [self.navigationBar pushNavigationItem:self.navigationItem animated:NO]; 

上面的代码,你有一个属性navigationBar引用独立的导航栏。

如果你不想自己pipe理它,你可以像build议的mplappert一样做,并在UINavigationController嵌套你的视图控制器(没有独立的UINavigationBar ),并以模态方式呈现导航控制器,而不是视图控制器。

如果您已经在您的IB中定义了一个UINavigationBar,还可以find这个更简单的方法。 假设self.navigationBar是你的IBOutlet:

 self.navigationBar.topItem.title = title; 

(使用XCode 4.5.2)find一个直接在Interface Builder中工作的方法 – 不用在代码中设置。

在(IB)中selectViewController对象的情况下,在Identity Inspector下有一个标有“ 用户定义的运行时属性 ”的部分。 我添加了Stringtypes的keyPath“title”,并将其设置为我想要的值。

经过testing,当将其推入导航控制器堆栈并以模态方式打开(当然是使用模态导航控制器)时,它将起作用。

导航项目的创buildiboutlet中的viewcontroller.h文件

  @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle; 

– 将其命名为“navigationBarTitle”

在viewcontroller.m文件中添加超级viewDidLoad中的代码

  self.navigationBarTitle.title = @"Favorites"; 

将导航栏项目中的故事栏连接到navigationBarTitle。

在我的.h文件中

  • 将导航项的子项从故事板拖到.h文件中

  • 命名为“navigationBarTitle”

在我的.m文件中

  • 新增了self.navigationBarTitle.title = @“Some Title”;

这是最简单的方法:

 [[[self.navigationController navigationBar] topItem] setTitle:@"The Title"]; 

您可以使用现有的导航栏以下代码

 self.navigationController?.navigationBar.topItem?.title = "Calender" 

简单地把你的UIViewController放到一个新的UINavigationController的视图控制器堆栈中,并以模态方式呈现该导航控制器。