我正在尝试更好地理解使用UINavigationController创建复杂的导航。如果我在任何假设中都错了(这是可能的),请告诉我。
据我所知,似乎UINavigationController专门设计用于实现一种导航,其中推送新控制器以“线性”方式提供更深入的数据细节。您可以通过“推”或“弹出”控制器来进一步导航。
但是,通常情况下,应用程序在每个视图中都有一种方法可以转到另一个视图,该视图不必是父级,并且可以位于堆栈的先前级别(或者根本不存在)。这样的应用程序倾向于让用户去任何他想要的地方,这似乎与UINavigationController的工作方式相冲突。
我觉得很明显,如果我开始无控制地推动控制器,我就会遇到内存问题。
例如,我怎样才能进入堆栈中两层的视图(例如,“Home”按钮会做什么)?我应该将一些控制器/视图保存为单个变量中的初始值,以便更好地访问并避免内存问题吗?
答案 0 :(得分:4)
您可以使用popToRootViewControllerAnimated:
返回根目录,或popToViewController:animated:
回弹到任意以前的视图控制器。您还可以使用setViewControllers:animated:
直接设置整个视图控制器堆栈。
但请注意不要混淆用户。