IPhone导航控制器 - 重用视图的最佳实践

时间:2010-11-09 13:33:11

标签: iphone uinavigationcontroller navigationcontroller

您好 我在我的应用程序中使用了很多导航控制器,但我的应用程序开始遭受视图反复调用相同视图并在导航控制器堆栈上推送它们而不是重复使用堆栈上的现有视图。

例如,我有一个地图视图,在我的应用程序的各个地方调用。

我应该通过Nav Controller堆栈找到我已推送的mapview并将其移动到堆栈的顶部。

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

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

任何人都有在Nav Controller堆栈中查找视图的好例子。

我该怎么做?

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

如果有办法在堆栈中快速查找视图,或者我需要将索引/ NSDictionary保留在某个位置。

我注意到无论是谁在编写Facebook应用程序现在都有同样的问题。当通知进来时,他们打开应用程序并实例化通知视图并将其推送到堆栈上。过了一会儿,你最终关闭了一堆旧的通知窗口,以回到主菜单。 欢呼声

1 个答案:

答案 0 :(得分:1)

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

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

如果您事先知道viewControllers将被推入堆栈,您可以使用以下功能立即推送它们,而不是一次又一次地推送它们。

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated