【发布时间】:2013-12-08 16:01:19
【问题描述】:
我有一个普通的UINavigationController,附有几个视图,它们工作得很好。它的RootViewController 在左上角有一个自定义菜单按钮,与附加视图上的“后退”按钮位于同一位置。单击此菜单按钮时,将出现菜单并提供五个选项。
显然,通过单击其中一个选项,您将看到该选项的 ViewController。
我想完全“忘记”当前的 ViewController,并继续使用这个新的控制器。通常,我会执行[self presentViewController....]; 或[self.navigationController push..]; 之类的操作,但在这些方法中,我认为当前的ViewController 将始终存在于新呈现的viewController 的“下方”(因为如果使用[self dismissViewController..];,您将返回此实例化,我不想要这个)。
在呈现的 ViewController 中会有一个菜单选项返回到原始控制器,但我仍然希望这是它的一个干净的实例,而不仅仅是弹出。通过及时思考,我认为通过使用我所知道的方法,我可能会在彼此之上创建无限数量的 ViewController。
我在 ARC 时代开始之后进入了 iOS 世界,所以我不知道如何释放或取消分配这些视图,我认为这与这里相关。
第二个 View Controller 也应该是 UINavigationController 中的一个根,我不确定是否最好使用相同的 UINavigationController,或者我是否应该呈现一个新的,并取消旧的。本质上,我想将导航控制器的rootViewController from 替换为rootViewController,但我不知道这怎么可能。或者可能推送到 ViewController2,然后将 rootViewController 从层次结构中弹出,将新的 ViewController 作为根,但我认为导航后退按钮会出现问题(如果可能的话)。
我认为让 ViewController2 作为其自己的 NavigationController 的根,并从 ViewController1 呈现此 NavigationController 一样容易。问题是,我想在呈现 ViewController2 后从内存中完全删除与 ViewController1 及其 NavigationController 有关的所有内容,但我不知道如何。
我对针对我的情况的其他解决方案持开放态度,但我也想知道如何在大致呈现另一种观点后完全“忘记”一个观点。
【问题讨论】:
标签: ios objective-c cocoa-touch uiviewcontroller uinavigationcontroller