iOS 5中缺少navigationController栏后退按钮

时间:2011-11-15 22:27:07

标签: iphone uinavigationcontroller xcode4.2 ios5

我升级到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的顶部是否有导航栏缺失或需要的东西?

2 个答案:

答案 0 :(得分:1)

不是100%明白什么是错的。在这种情况下(适用于较旧的iOS,升级中断)你可能一直在做错事,但它恰好在旧操作系统上运行。

正如猜测一样,我建议使用UIWindow的rootViewController属性而不是旧式的addSubview:call。换句话说,

window.rootViewController = self.navigationController;

看看是否有帮助。

答案 1 :(得分:1)

我明白了。当我按照此SO链接重新弹出时,我有以下代码隐藏导航栏

hide_nav_bar

 - (void) viewWillAppear:(BOOL)animated
 {
     [self.navigationController setNavigationBarHidden:YES animated:animated];
     [super viewWillAppear:animated];
 }

一旦我注释掉了这段代码,就会出现后退按钮。