设置在Interface Builder中创build的导航栏的标题
我有一个模式视图控制器的视图来自XIB。 我希望它具有与我的其他导航应用程序相同的外观和感觉,但是它不是推送到导航堆栈的视图,而是以模态方式呈现的。 我拖入一个UINavigationBar,并使其成为一个出口,但是它没有标题属性来设置。 我有两个可以调出这个模式视图的字段,我想根据哪个模式视图创build不同的标题。
UINavigationBar
pipe理一堆UINavigationItem
,就像一个UINavigationController
pipe理器,一堆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
的视图控制器堆栈中,并以模态方式呈现该导航控制器。