0

嗨,我在我的应用程序中经常使用导航控制器,但我的应用程序开始遭受视图一遍又一遍地调用相同视图并将它们推送到导航控制器堆栈而不是重用堆栈上的现有视图的问题。

例如,我有一个在我的应用程序的不同位置调用的地图视图。

我真的应该通过导航控制器堆栈并找到我已经推送的地图视图并将其移动到堆栈的顶部。

相反,我创建了一个新的并将其推到顶部。

随着我的应用程序变得越来越复杂,我肯定会遇到内存问题,用户会厌倦点击后退按钮进入主菜单。

任何人都有在导航控制器堆栈中找到视图的好例子。

我该怎么做?

我是否需要在 App Delegate 中保留指向我的地图视图的指针?

如果有办法在堆栈中快速找到视图,或者我是否需要将索引/NSDictionary 保存到它们的某个位置。

我注意到现在编写 Facebook 应用程序的人也遇到了同样的问题。当通知进来时,他们打开应用程序并实例化通知视图并将其推送到堆栈上。一段时间后,您最终会关闭一大堆旧通知窗口以返回主菜单。干杯

4

1 回答 1

1

如果您希望特定的视图控制器位于堆栈顶部,您已经将其推送到堆栈上,而不是创建一个,您可以使用以下方法。

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

如果您事先知道 viewController 将被推送到堆栈上,您可以使用下面的函数一次推送它们,而不是一次又一次地推送它们。

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
于 2010-11-09T14:08:43.330 回答