1

我正在用我的 UINavigationController 推送到几个视图控制器,当我在我的第三个 UISubViewController 上时,我编码为“popToRootViewController”并且它弹出回来,但是导航栏项目推送到第二个视图控制器而不是第一个..

  • 我尝试了有和没有动画,但什么都不会改变。
  • 我试着说 self.navigationController.navigationBar 弹回来,但它在我的栏上什么也没做。

感谢帮助..

4

2 回答 2

1

我对你的问题有点困惑,但我认为这应该会有所帮助。据我所知,您不能让 UINavigationController 上的“后退”按钮返回超过 1 个弹出窗口。因此,您要做的是添加另一个执行 popToRootViewController 功能的按钮。尝试这样的事情:

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStylePlain target:self action:@selector(homeAction:)];

self.navigationItem.rightBarButtonItem = newButton;

这将在导航控制器的右侧添加一个按钮。下一步是添加一个函数,无论你在动作中命名什么(在这种情况下,它需要被称为“homeAction”)。这看起来像这样:

-(IBAction)homeAction:(id)sender {
      [self.navigationController popToRootViewControllerAnimated:YES];
}

这应该涵盖弹出回到您在堆栈中的控制器的根目录。您还必须对 .h 文件使用 IBAction 方法,但除此之外,它应该做您想做的一切。

于 2010-11-21T21:09:19.270 回答
0

除非您对 NavigationController 的 UIViewControllers 数组做一些奇怪的事情,否则该方法应该是:

[self.navigationController popToRootViewControllerAnimated:YES];
于 2010-11-03T18:58:27.613 回答