1

我已经使用 Cocos2D 几个月了。我用:

MyCCScene *sceneToRun = [MyCCScene node];
[[CCDirector sharedDirector] replaceScene:sceneToRun];

这将加载新场景,从内存中清除前一个场景,然后显示新场景。很简单。

问题:UIKit 中是否有类似的东西?

-Modal segues 将旧的 ViewController 保存在内存中,它们的目的是不同的。

-Push segues 仅在 UINavigationControllers 中工作。

我认为要走的路是实现我自己的 Container ViewController 以我想要的方式处理它的子 ViewControllers 和内存。http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81

但我并不完全确定。没有更直接的方法吗?对于如此简单而明显的事情,这看起来像是一个巨大的矫枉过正。

4

1 回答 1

0

我可能已经找到了一个不错的解决方案。应该使用 UINavigationController,并手动管理其 viewContollers 属性(即 UIViewController 的堆栈)。在加载新的 UIViewController 之后(或之前),您可以从堆栈中删除旧的 UIViewController,从而将其从内存中清除。

这篇文章有帮助: 如何从 UINavigationController 弹出视图并在一次操作中将其替换为另一个视图?

这样你就可以创建一个程序流,只有当 UIViewController 一次在内存中时,当你需要一个新的 UIViewController 时替换它们。

于 2012-12-10T14:37:54.013 回答