iPhone视图策略

iPhone视图策略,iphone,Iphone,我正在开发一个应用程序,但还没有得到最佳的导航流程工作 为了让您了解我的应用程序的结构,我有一个主视图,允许用户启动新游戏或查看高分。在游戏结束时,我想让用户选择查看高分或返回主菜单-我有一个游戏视图 层次结构如下所示: Main View | +--Game View | | | +--Game Over View | | | +--High Scores View | +--High Scores View 我正在使用presentModalViewController

我正在开发一个应用程序,但还没有得到最佳的导航流程工作

为了让您了解我的应用程序的结构,我有一个主视图,允许用户启动新游戏或查看高分。在游戏结束时,我想让用户选择查看高分或返回主菜单-我有一个游戏视图

层次结构如下所示:

Main View
|
+--Game View
|  |
|  +--Game Over View
|     |
|     +--High Scores View
|
+--High Scores View
我正在使用presentModalViewController方法从游戏视图切换到游戏结束视图。这很好,但是当我想返回主视图时,我有两层视图要浏览(我想关闭游戏视图和游戏视图以直接返回主视图)。要关闭视图,我使用dismissModalViewControllerAnimated,但这对于遍历多个视图并不理想。是否有方法替换当前模型视图而不是在顶部打开新视图

我希望这是有道理的。请让我知道如果你需要更多的细节

提前感谢您的帮助


Alan

如果在根视图控制器上调用
-dismissModalViewController:animated:
,它将同时关闭两个层。

这并不优雅,但一种永远看不到中间视图的方法是在所有视图下都有一个过渡视图(某种默认视图或启动屏幕)。然后,让您想要交换的所有视图返回到转换视图,并让该转换视图控制器根据某种下一状态逻辑显示下一个要显示的模式视图。您的视图深度永远不会超过1个,因此不会看到任何中间视图。

除了Alexander的建议之外,您可以完全避免使用
presentModelViewController:animated:
。相反,只需设置活动
ui窗口的
rootViewController
属性即可

aViewController
设置为
rootViewController
后,调用
[aViewController.view becomeFirstResponder]使其能够响应触摸输入


如果
presentModelViewController:animated:
类似于调用方法,则设置
rootViewController
类似于转到。我认为“转到”在这里可能更合适,因为视图呈现顺序的循环性:


主视图->游戏视图->游戏结束视图->主视图->游戏视图->游戏结束视图->等等。

谢谢Alexander。这是可行的,但在转到根视图之前,您可以短暂地看到中间视图。有没有办法避免这种情况?标题中有一个拼写错误…非常感谢Jon,这很接近。我现在可以直接从游戏结束视图返回主视图。但是,我的按钮在主视图上不再起作用(当它们最初起作用时)。我还需要做些什么来激活视图?我刚刚编辑了我的答案以回应你的评论;见第2段。