2011-10-09 77 views
1

所以我有四个视图控制器,A,B,C,D,他们按顺序显示。假设我在视图C中,并且我想要查看D,所以我将视图控制器D推入导航控制器堆栈中,但是,我想要的是,当D尝试返回时,它直接转到视图控制器B的C.UINavigationController堆栈问题推和弹

有没有一种特殊的方法来实现这一目标?逻辑的方法是做popViewController,然后pushViewController:C.我试过这个,但没有成功。

+0

不同 “所以我*三个*视图控制器,A,B,C,d” - 你需要纠正:) – tipycalFlow

+0

感谢,它现在修正 – xonegirlz

回答

0

因此顺序是A-> B-> C-> d正确?从D开始,当“Back”按钮被点击时,你想要去B? 这意味着弹出D然后弹出C让你回到B.这就是popToViewController:animated:所做的。 UINavigationController Class Reference

popToViewController:动画:

入时视图控制器,直到指定的视图控制器处于 顶部导航堆栈的。

注意,这是从popToRootViewControllerAnimated:

+0

我试着调用popToViewController两次,它不起作用 – xonegirlz

+0

当你在D上时,你只需要调用它一次。你究竟看到了什么? – jcm

0

如果A位于堆栈的底部,或者popToViewControllerAnimated:位于中间某处,则可以使用popToRootViewControllerAnimated:

+0

为我说,我已经这样做了......所以当我在视图控制器B,我想加载C ..我做了popToViewControllerAnimated,然后pushViewController:C,但它没有解决 – xonegirlz

+0

我编辑了上面的问题,以反映真实案例 – xonegirlz

+0

好的,那么我很困惑你在这里说什么。你的堆栈是ABCD,那么你想要它去AB?但是你想再次推C来制作ABC? – Sean

1

代替推d的,请与导航控制器上-setViewControllers:animated:与视图控制器的阵列有序A,B,和D

+0

一般来说,这不是一个好的做法,因为它可能会让用户误解如何以直观的方式理解界面。 – Sean

+0

@肖恩然后你会怎么解决它? – xonegirlz