我升级到XCode 4.2。当我的应用程序在iOS 4.0模拟器中运行时,导航栏会显示在多个被推入的视图中。当应用程序在iOS 5.0模拟器和iOS 5.0设备上运行时,导航栏将在所有视图中消失,并且表视图会被向上推以填充该空间。使用以下代码创建导航控制器:
navigationController = [[UINavigationController alloc] initWithRootViewController:swViewController];
并将视图推送到navigationController,如下所示:
UIBarButtonItem *backButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"NextLevel" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease] ;
self.navigationItem.backBarButtonItem = backButtonItem;
[self.navigationController pushViewController:self.listController animated:YES];
通过以下方式将navigationController添加到窗口中:
[window addSubview:self.navigationController.view];
更新1 - 看起来iOS 5中的导航栏默认是隐藏的,所以我添加了
[[self navigationController] setNavigationBarHidden:NO animated:YES];
我现在看到导航栏,但没有backButtonItem中指定的后退按钮。
更新2 - 我还设置了navigationController标题,但也没有显示。
self.navigationController.title = @"Title";
在iOS 5.0的顶部是否有导航栏缺失或需要的东西?
答案 0 :(得分:1)
不是100%明白什么是错的。在这种情况下(适用于较旧的iOS,升级中断)你可能一直在做错事,但它恰好在旧操作系统上运行。
正如猜测一样,我建议使用UIWindow的rootViewController属性而不是旧式的addSubview:call。换句话说,
window.rootViewController = self.navigationController;
看看是否有帮助。
答案 1 :(得分:1)
我明白了。当我按照此SO链接重新弹出时,我有以下代码隐藏导航栏
- (void) viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
一旦我注释掉了这段代码,就会出现后退按钮。