在导航控制器之外停止ViewController

时间:2015-10-05 17:24:31

标签: ios objective-c iphone uiviewcontroller

我是iOS开发的新手,已经构建了一个基本的应用程序来帮助我熟悉这些约定。这是一个基本游戏,具有以下流程:

主菜单 - > (模态)新游戏类型 - > (Push Segue)游戏 - > (模态)游戏结束 - > (推送Segue)主菜单

我的问题涉及从游戏/游戏回到主菜单。菜单是一个ViewController,Game是一个单独的ViewController,但没有嵌入导航控制器。

当我在游戏结束后将Segue推回主菜单时,Game ViewController会发生什么?由于它不是模态,我无法从主菜单ViewController中忽略它,当用户启动另一个游戏时,推送游戏的Segue是否会创建另一个游戏?我应该停止(以及如何)完成游戏ViewController吗?

我问,因为在调试时,运行几个游戏后我看到了UITranitionView的集合。我想确保我没有泄漏任何东西并正确处理过渡......

2 个答案:

答案 0 :(得分:0)

如果你想使用正确的过渡,那么使用“主菜单 - >(模态)新游戏类型 - >(推送Segue)游戏 - >(模态)游戏结束 - >(POP Segue to主视图控制器)主菜单“而不是使用”主菜单 - >(模态)新游戏类型 - >(推送Segue)游戏 - >(模态)游戏结束 - >(推送Segue)主菜单“

答案 1 :(得分:0)

对于像我这样对此感到困惑的人,这就是我最终要做的事情。

正如Ankit所提到的,流行的segue是要走的路,但你不能从不存在的导航堆栈中弹出UIViewController。所以要解决这个问题,我必须将我的主视图控制器嵌入到UINavigationController中,然后将游戏和游戏通过vc推送到导航堆栈上。一旦游戏结束,我就会放松回到主vc。

主菜单 - > (莫代尔)新游戏 - > (推)游戏 - > (推)游戏结束 - > (放松)主要

界面构建器中有一个选项可以隐藏UINavigationController上的导航栏,这就是我所做的。

底线:我使用的这个流预设了一个导航堆栈,因此需要一个UINavigationController。意识到这一点后,事情变得更有意义。