对 UINavigationController 的深入理解
Posted
技术标签:
【中文标题】对 UINavigationController 的深入理解【英文标题】:Deeper understanding of UINavigationController 【发布时间】:2011-04-23 15:22:08 【问题描述】:我试图更好地理解使用 UINavigationController 创建复杂导航。请,如果我在任何假设(这是可能的)中错了,请告诉我。
据我所知,UINavigationController 似乎是专门为实现一种导航而设计的,其中推送新控制器以“线性”方式提供更深入的数据细节。您可以通过“推”或向后“弹出”控制器来进一步导航。
但是,通常应用程序在每个视图中都有一种方法可以转到另一个视图,该视图不必是父视图,也可以位于堆栈的先前级别(或者根本不存在)。此类应用程序倾向于让用户去任何他想去的地方,这似乎与 UINavigationController 的工作方式相冲突。
在我看来很明显,如果我开始在没有控制的情况下推动控制器,我就会遇到内存问题。
例如,我怎样才能转到堆栈中下两层的视图(例如,“主页”按钮会做什么)?我是否应该将一些控制器/视图作为初始值保存在单例变量中以便更好地访问并避免内存问题?
【问题讨论】:
【参考方案1】:您可以使用popToRootViewControllerAnimated:
返回根目录,或使用popToViewController:animated:
弹回任意先前的视图控制器。您也可以使用setViewControllers:animated:
直接设置整个视图控制器堆栈。
不过,请注意不要让您的用户感到困惑。
【讨论】:
非常感谢 Anomie,它非常有用!以上是关于对 UINavigationController 的深入理解的主要内容,如果未能解决你的问题,请参考以下文章
IOS 传递对象对 UINavigationController 子的引用
UINavigationController:对所有弹出视图控制器的视图应用通用填充/边距
如何启动 UINavigationController 推送以响应对 UICollectionViewCell 的点击
iOS 7 UINavigationController 对开始/结束外观转换的不平衡调用