从模态UIViewController导航视图层次结构

时间:2011-03-21 20:54:25

标签: iphone objective-c uiviewcontroller uinavigationcontroller

我正在使用一些使用UINavigationController链接的UIViewControllers开发一个应用程序。 UINavigationController设置为将主菜单作为其默认视图。主菜单有两个按钮,按下时显示另外两个UIViewControllers中的一个。所以我有一个简单的两层视图层次结构,看起来像这样......

Main Menu (UIViewController)
|
 ---- Menu Option 1 (UIViewController)
 ---- Menu Option 2 (UIViewController)

现在我希望我的菜单选项1 UIViewController显示另一个UIViewController作为模态视图 - 工作正常。但是,我还希望能够直接从这个模态视图跳转到主菜单...

Main Menu (UIViewController) <--------------
|                                           |
 ---- Menu Option 1 (UIViewController)      |
      |                                     |
       ---- Modal View (UIViewController)   |

知道UINavigationController是一个堆栈,我需要弹出我的模态视图和下一个项目,我想知道它是如何可能的......

是否有一种简单的方法可以在不向菜单选项1 UIViewController添加回调方法的情况下执行此操作?

我很高兴对我的实施也提出反馈意见 - 这似乎不正确!

1 个答案:

答案 0 :(得分:2)

UINavigationController有方法-popToRootViewControllerAnimated:和-popToViewController:animated:您可以使用它将导航堆栈弹回特定的视图控制器。所以,你可以让模态控制器解散自己,然后调用

[self.navigationController popToRootViewControllerAnimated:YES];

那就是说,确保做这样的事情对你的用户有意义。导航样式的一个重要方面是用户会记住他们如何到达应用程序中的给定点,并且他们希望能够通过这些相同的控制器返回。但是,如果它适用于您的应用程序,则-popToRootViewControllerAnimated:是实现它的方法。