我有一个模态视图控制器,其视图来自XIB。我希望它具有与我的基于导航的应用程序的其余部分相同的外观和感觉,但它不是一个被推送到导航堆栈的视图,它以模态呈现。我拖了一个UINavigationBar并将它作为一个插座,但它没有要设置的title属性。我有两个字段可以显示这个模态视图,我希望标题设置不同,具体取决于哪一个创建模态视图。
答案 0 :(得分:90)
UINavigationBar
管理一堆UINavigationItem
,就像UINavigationController
经理一堆UIViewController
一样。要设置直接可见的内容,您应该使用您希望条形图反映的视图控制器的navigationItem使用pushNavigationItem:animated:
或setItems:animated:
。
例如:
self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];
上面的代码,其中有一个属性navigationBar
,它引用了独立的导航栏。
如果你不想自己管理它,你可以像mplappert建议的那样做,并在UINavigationBar
中嵌套你的视图控制器(没有独立的UINavigationController
)并以模态方式呈现导航控制器而不是你的视图控制器。
答案 1 :(得分:64)
如果您已经在IB中定义了UINavigationBar,也会发现这种更简单的方法。假设self.navigationBar是你的IBOutlet:
self.navigationBar.topItem.title = title;
答案 2 :(得分:8)
(使用XCode 4.5.2)找到一种直接在Interface Builder中工作的方法 - 无需设置代码。
在(IB)中选择了ViewController对象后,在Identity Inspector下有一个标有“用户定义的运行时属性”的部分。 我添加了String类型的keyPath“title”并将其设置为我想要的值。
经过测试,当按下导航控制器堆栈并以模态方式打开时(当然使用模态导航控制器),这是有效的。
答案 3 :(得分:4)
导航项的创建iboutlet中的viewcontroller.h文件
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;
- 将其命名为“navigationBarTitle”
在viewcontroller.m文件中添加super viewDidLoad
中的代码 self.navigationBarTitle.title = @"Favorites";
将导航栏项目中的storybord连接到navigationBarTitle。
答案 4 :(得分:0)
在我的.h文件中
将导航项的子项从故事板拖到.h文件中
将其命名为“navigationBarTitle”
在我的.m文件中
答案 5 :(得分:0)
这是最简单的方法:
[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
答案 6 :(得分:0)
您可以使用现有导航栏和以下代码
self.navigationController?.navigationBar.topItem?.title = "Calender"
答案 7 :(得分:-1)
只需将UIViewController
放入新的UINavigationController
视图控制器堆栈中,然后以模态方式显示该导航控制器。