3

我有 3 个视图控制器,从第一个到第二个,从第二个到第三个。

我想从第三个视图控制器回到第一个。

我发现的一个解决方案是创建一个自定义按钮并替换后退按钮,这样我就可以执行自己的选择器并返回到 firstVC。但是我创建的按钮看起来不像后退按钮。

所以我想到的一个解决方案是:

进入第三个视图控制器后,更改 navigationController 中的 viewControllers 数组,删除第二个视图控制器。这样它会回到第一个而不改变后退按钮。

这可能吗?我可以随意更改 UINavigationController 堆栈吗?

提前致谢

4

3 回答 3

3

您可以尝试从堆栈中删除第二个视图控制器并检查它。应该不是问题。

NSMutableArray *array = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
[array removeObjectAtIndex:1];

self.navigationController.viewControllers = array;

或者只是使用

[self.navigationController setViewControllers:array animated:NO];

但这不是推荐的方法,因为用户可能会感到困惑。所以当你这样做时要小心。

于 2012-11-09T00:48:42.947 回答
3

你可以,有一个特殊的方法 - [UINavigationController setViewControllers:animated:]

于 2012-11-09T01:05:29.753 回答
1

我不知道您正在做什么的详细信息,但是当用户希望使用该后退按钮返回一次时,您希望避免返回两次。我认为一个好的解决方案是对视图进行一些其他操作。

所以我从你所说的假设,如果用户去那个视图,他们需要回到开始并且不能回到第二个视图控制器。在第三个 VC 上,我将完全隐藏后退按钮或导航栏,然后在视图上有另一个按钮,该按钮清楚地执行了一些操作,然后您只需 popToRootViewController。

于 2012-11-09T01:01:44.193 回答