2010-11-09 82 views
0

嗨 最佳实践我使用导航控制器很多在我的应用程序,但我的应用程序开始从视图调用同样的观点一遍又一遍,并推动他们的导航控制器堆栈上,而不是重用现有受苦在堆栈上的意见。IPhone导航控制器 - 重用意见

比如我有一个名为在我的应用程序不同的地方地图视图,多数民众赞成。

我应该去通过导航控制器栈和发现我已经推开的MapView,并将其移动到堆栈的顶部。

取而代之,我创建一个新的,并将其推到顶部。

由于我的应用程序变得更加复杂,我敢肯定生病获取内存问题,用户会觉得无聊点击返回按钮进入主菜单。

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

我应该怎么做?

我是否需要在App Delegate中保留一个指向我的Map View的指针?

如果有一种方法,在堆栈中快速查找视图或做我需要保持一个索引/ NSDictionary中自己的位置的某处。

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

+0

可以使用UINavigationController的属性来获取堆栈上的所有视图控制器:http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html – 2010-11-09 13:39:07

回答

1

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

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

如果你事先知道viewControllers将压入堆栈,你可以同时与下方的功能推动他们,而不是一次又一次地推动他们。

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