导航控制器弹出视图中的特定流程

时间:2011-07-25 08:22:54

标签: iphone xcode ios4 uiviewcontroller uinavigationcontroller

我有4种不同的观点(a,b,c,d)。用户可以从:

a->b,
b->c ,b->d 
c->b ,b->d 
d-> c, d->b

要加载新视图,我使用导航控制器推送视图。 我的问题是什么是处理后退按钮的最佳解决方案,以使它始终像这样工作:

d->c
c->b
b->a

无论所有先前的视图控制器推送。

换句话说,用户进行以下转换序列: (即-a> b-> c-> b-> c-> d-> c)但是当他按下后退按钮时我希望他看到屏幕B,而不是先前按下D。

我知道如何以丑陋的方式解决它,但我希望更优雅。

1 个答案:

答案 0 :(得分:1)

UINavigationController支持通过popToViewController弹出一个特定的视图控制器:动画方法......

  

弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。

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

Official Apple Docs

但我建议您重新考虑导航层次结构。 Apple Human Interface指南建议遵循结构化和一致的导航方案。控制器之间的跳转可能会让用户感到困惑。