我有正常的UIViewController,其中我添加了UINavigationControllerDelegate,i 在willappear中添加如下内容?但它没有用?
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationItem.title = @"hai";
答案 0 :(得分:43)
您应该在添加到导航控制器的视图控制器中设置标题。
即。在添加视图控制器
中- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"My Title";
}
或直接访问viewcontrollers数组
AddFriendViewController *addFriendsView = [[AddFriendViewController alloc] initWithNibName:@"AddFriendViewController" bundle:nil];
[self.navigationController pushViewController:addFriendsView animated:YES];
[[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
[addFriendsView release];
答案 1 :(得分:16)
每个视图控制器都有一个导航项。您正在更改导航控制器的导航项...但除非导航控制器位于另一个导航控制器内,否则永远不会看到它!而不是
self.navigationController.navigationItem.title = @"hai";
你想要
self.navigationItem.title = @"hai";
或者,如果导航项目的标题为零,导航控制器将使用您的视图控制器的标题:
self.title = @"hai";
您应该只设置导航栏和标签栏使用的视图标题,除非您因某些原因要为每个标题指定不同的标题。
答案 2 :(得分:1)
在我的情况下,当我在iOS6
方法中设置标题时,标题在init
上不可见:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = LS(@"Favorites");
self.tabBarItem.title = LS(@"Favorites");
self.tabBarItem.image = [UIImage imageNamed:@"star"];
}
return self;
}
所以,它应该从那里移到ViewDidLoad
。
答案 3 :(得分:0)
设置标题后,您确定self.navigationController.navigationItem
不是nil
吗?
答案 4 :(得分:0)
如果没有将控制器推入堆栈,即。你正在堆栈顶部显示viewcontroller(有时称为rootViewController),你可以用它来实现
[rootViewController setTitle:@"Title"];
请注意,您必须使用 setTitle - rootViewController.title = @“Title”通常不起作用。
实际上,你可以使用任何一个viewcontroller,即使它还没有viewDidLoad。如果以编程方式创建,只需使用
创建它myViewController *mvc=[[myViewController alloc] initWithNibName:@"nameofnibwithout.xib" bundle:nil];
或者您可以将其声明为app委托中的对象,将其设置为IBOutlet,创建UIViewController并将其类设置为myViewController,并将其连接到IBOutlet,因此它不是nil。
答案 5 :(得分:0)
您可能需要在控制器的“属性”选项卡中将导航栏设置为“带提示的黑色导航栏”。这对我有用。