iOS 5中缺少navigationController栏后退按钮
Posted
技术标签:
【中文标题】iOS 5中缺少navigationController栏后退按钮【英文标题】:navigationController bar back button missing in iOS 5 【发布时间】:2011-11-15 22:27:07 【问题描述】:我升级到 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 的顶部是否可见或缺少某些内容?
【问题讨论】:
【参考方案1】:目前还不是 100% 清楚出了什么问题。在这种情况下(适用于较旧的 iOS,升级时中断)您可能一直做错了什么,但它恰好适用于较旧的操作系统。
作为一种猜测,我建议使用 UIWindow 的 rootViewController 属性而不是旧式的 addSubview: 调用。换句话说,
window.rootViewController = self.navigationController;
看看有没有帮助。
【讨论】:
它在 iOS 5 上崩溃的原因很可能是我之前做错了什么。随着每次升级,Apple 都会尝试改进错误检查。我在上面添加了您的代码,但这并没有解决问题。【参考方案2】:我想通了。当我按照此 SO 链接弹出备份时,我有以下代码来隐藏导航栏
hide_nav_bar
- (void) viewWillAppear:(BOOL)animated
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
一旦我注释掉了这段代码,后退按钮就会出现。
【讨论】:
以上是关于iOS 5中缺少navigationController栏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
IOS。如何在 .xib 中嵌入 NavigationController?
iOS7 NavigationController 右滑手势问题