2011-04-23 30 views
1

我想更好地理解用UINavigationController创建复杂的导航。请,如果我错了任何假设(这是可能的),请让我知道。UINavigationController更深入的理解

据我所知,UINavigationController似乎是专门设计用来实现一种导航,其中推新控制器以“线性”方式提供更深入的数据细节。您可以通过“推送”或返回“弹出”控制器进一步进行导航。

但是,通常情况下,应用程序在每个视图中都有一种转到另一个视图的方式,该视图不必是父视图,并且可以位于堆栈的以前级别(或者根本不存在)。这样的应用程序倾向于让用户去他想要的任何地方,这似乎与UINavigationController的工作方式相冲突。

在我看来很明显,如果我开始推控制器没有控制,我会有内存问题。

例如,我可以如何转到堆栈中两层的视图(例如,“主页”按钮可以做什么)?我是否应该将一些控制器/视图保存为单例变量中的初始值,以便更好地访问并避免内存问题?

回答

4

您可以使用popToRootViewControllerAnimated:返回根目录或popToViewController:animated:以回弹到任意先前的视图控制器。您也可以使用setViewControllers:animated:直接设置整个视图控制器堆栈。

但要小心,不要混淆你的用户。

+0

非常感谢Anomie,它一直非常有用! – IoChaos 2011-04-23 16:49:09