我正在开发一款应用,但尚未获得最佳导航流程。
为了让您了解我的应用程序的结构,我有一个主视图,允许用户开始新游戏或查看高分。在游戏结束时,我想让用户选择观看高分或回到主菜单 - 我有一个游戏超过视图。
层次结构如下所示:
Main View
|
+--Game View
| |
| +--Game Over View
| |
| +--High Scores View
|
+--High Scores View
我正在使用presentModalViewController方法从游戏视图切换到游戏视图。这很好,但是当我想回到主视图时,我有两层视图可以浏览(我希望在视图上关闭游戏并且游戏视图直接返回到主视图)。要关闭视图,我使用dismissModalViewControllerAnimated,但这不适合遍历多个视图。有没有办法替换当前模型视图而不是在顶部打开一个新视图?
我希望这是有道理的。如果您需要更多详细信息,请与我们联系。
提前感谢您的帮助。
艾伦
答案 0 :(得分:1)
如果您在根视图控制器上调用-dismissModalViewController:animated:
,它将关闭两个图层。
答案 1 :(得分:1)
除了Alexsander的伟大建议,你可以完全避免使用presentModelViewController:animated:
。相反,只需设置有效rootViewController
的{{1}}属性。
将UIWindow
设置为aViewController
后,请致电rootViewController
以使其能够响应触摸输入。
如果[aViewController.view becomeFirstResponder];
就像调用某个方法一样,那么设置presentModelViewController:animated:
就像是一个goto。我认为“goto”在这里可能更合适,因为可以呈现视图的顺序的循环性质:
主视图 - >游戏视图 - > Game Over View - >主视图 - >游戏视图 - > Game Over View - >等
答案 2 :(得分:0)
它不优雅,但是从不看中间视图的一种方法是在所有内容下都有过渡视图(某种默认视图或闪屏)。然后,让您想要交换的所有视图都将自己放回到转换视图,并让转换视图控制器根据某种下一状态逻辑显示下一个要显示的模态视图。你永远不会超过1个视图,所以不会有任何中间视图。