将控制器推入堆栈后,后退按钮未显示

Posted

技术标签:

【中文标题】将控制器推入堆栈后,后退按钮未显示【英文标题】:Back button isn't getting displayed upon pushing a controller into the stack 【发布时间】:2011-01-21 21:10:03 【问题描述】:

我从 基于导航的应用程序 模板创建了 ios 应用程序。 这个 sn-p 来自 RootViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
  DotoViewController *detailViewController = [[DotoViewController alloc] 
                             initWithNibName:@"DotoViewController" bundle:nil];
  NSManagedObject *selectedObject = [[self fetchedResultsController] 
                             objectAtIndexPath:indexPath];

  detailViewController.dotoObj = selectedObject;
  [self.navigationController pushViewController:detailViewController animated:YES];
  [detailViewController release];   

DotoViewController 是 UIViewController 的子类,并附带一个 NIB 文件。

点击一行后,DotoViewController 会显示出来,但左侧没有指向 RootViewController 的后退按钮。

我错过了什么?

【问题讨论】:

根视图控制器的 viewDidLoad 中有什么? @BoltClock RootViewController的viewDidLoad我没碰,它包含默认代码。 【参考方案1】:

也许你的根视图控制器有一个空标题?视图控制器的标题被用作后退按钮的标题,所以如果你有一个空字符串,这可能会导致后退按钮消失。如果它是 nil,它应该显示标准的“Back”。

【讨论】:

天啊!!你是对的,我为 RootViewController 设置了一个字符串,一切正常! :) 我花了过去三个小时试图弄清楚出了什么问题。发自内心的感谢。 我认为生成的代码应该将 RootViewController 的标题设置为 viewDidLoad 中的任何内容。 第二。我没有为我的根视图控制器显示标题,所以没有考虑设置标题,并且很困惑为什么我不能让后退按钮自动显示。

以上是关于将控制器推入堆栈后,后退按钮未显示的主要内容,如果未能解决你的问题,请参考以下文章

如何在 uinavigationcontroller 中隐藏后退按钮

UINavigationController 没有在后退按钮上弹出视图

单击按钮导航到root viewcontroller

视图控制器在发布后收到发送给它的消息,导致崩溃

以编程方式创建的后退按钮未显示在导航栏中?

如何更改缩短的后退按钮标题?