导航控制器堆栈,一次推送2个视图。因此,您可以直接从VController1跳到VController3

时间:2011-10-26 09:33:15

标签: iphone objective-c ios

我在UINavigationController应用程序上有3个ViewControllers的层次结构。

从VC1开始,从那里你可以加载VC2。在VC2中,您可以加载VC3。

您可以通过按导航栏上的左侧导航按钮向后导航VC。

但设计师希望能够从VC1-> VC3跳转,然后如果按左侧导航栏按钮返回,则会转到vc2。

是否可以使用NAV控制器进行此类导航?

如果用户想要去VC1-VC3,我可以将VC2和VC3都推送到navigationController堆栈,以便正确维护导航。

此外,如果用户想要从VC3-> VC1,我可以弹出VC3,然后将VC2从navigationController堆栈中弹出,以便VC1显示?

3 个答案:

答案 0 :(得分:3)

首先 - 告诉你的设计师这种导航让用户感到困惑,他们应该采用更多的可用性和UX类。第二 - 是的,这是可能的 - 最简单的方法是致电

[navigationController setViewControllers:newViewControllers animated:YES];

这将取代整个导航堆栈,因此请确保它包含[VC1,VC2,VC3](以及其他可能发生的其他内容)

答案 1 :(得分:1)

正常的后退按钮将弹出到上一个视图控制器。您可以在V3中创建一个左侧栏按钮,它将使用UINavigationController方法弹出到层次结构中的给定视图控制器(将您的V1实例作为viewController)

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

答案 2 :(得分:0)

按下后退按钮时,将VC2和VC3同时按到堆栈上以保留导航。要从VC3转到VC1,您可以使用...

[navigationController popToViewController:vc1 animated:YES];

或VC1是根...

[navigationController popToRootViewControllerAnimated:YES];