我怎样才能回到第一个视图控制器?

时间:2011-09-13 17:16:50

标签: iphone

我想回到第一个视图控制器。所以,我在第三个视图中使用了[self.navigationController popToRootViewControllerAnimated:NO]。但是,它可以追溯到第二种观点。我必须使用popToViewController: animated:吗? 我推了第三个视图:

[self.view addSubview:secondController.view]; // from the first view
[self.navigationController pushViewController:thirdController animated:YES]; // from the second view

2 个答案:

答案 0 :(得分:2)

在使用[self.navigationController popToRootViewControllerAnimated:NO]之前删除第二个视图:

UIView *v = [self.navigationController.viewControllers objectAtIndex:1];
[v removeFromSuperview];

修改
我这样做并且工作正常(我在堆栈的第三个视图中使用它):

NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];

[allControllers removeObjectAtIndex:1];

[self.navigationController setViewControllers:allControllers animated:NO];
[allControllers release];
[self.navigationController popViewControllerAnimated:YES];

答案 1 :(得分:0)

看起来你的navigationController是在推送thirdController时启动的。你的secondController没有被navigationController“推”,它被添加为子视图,这是完全不同的。所以,当你从secondController推送thirdController时,它认为你的rootController是secondController。

这里有两个选项:

  1. 改变你实际呈现secondController的方式 让navigationController推送它,或
  2. 在显示第三个控制器之前从视图中删除secondController。
  3. 你可能会popToViewController,正如你所提到的......如果这种方法有效,我会不肯定,但这是可能的。