使用UINavigationController进行“无限深入挖掘”

时间:2010-05-07 16:45:32

标签: objective-c iphone cocoa-touch

任何人都可以推荐一篇文章或者如何使用UINavigationController创建一个“无限下钻”的例子,就像你在Facebook,IMDB和BrightKite应用中看到的那样?

2 个答案:

答案 0 :(得分:4)

UINavigationController旨在以这种方式使用。如果内存成为一个问题,导航控制器将释放隐藏的视图并在需要导航回堆栈时重新加载它们。 Apple建议您出于此原因从NIB加载UIView

http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html#//apple_ref/doc/uid/TP40007457-CH103-SW28

向下滚动到第4项“配置根视图控制器的视图。”

答案 1 :(得分:-1)

从来没有这样做过......我会通过使用包含前一个视图内容的轻量级对象(可能只是一个URL?)来保持堆栈。不要只是将新的UIViewController推送到UINavigationController,而是在没有动画的情况下弹出当前的UIViewController,然后按下新视图。但是,我认为这不会正确处理好的动画。

另一种想到的方法是操纵UINavigationController的viewControllers数组。在推送新视图后,只需从数组中删除上一个视图。这样UINavigationController堆栈只能是1或2个元素深。处理后退按钮将创建正确的视图,将其插入viewControllers数组,然后弹出当前视图。您的状态将由轻量级对象堆栈管理,而不是重量级视图控制器。

-dan