2010-09-16 164 views
0

我正在开发一个应用程序,但尚未得到最佳的导航流程工作。iPhone视图策略

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

层次结构看起来是这样的:

Main View 
| 
+--Game View 
| | 
| +--Game Over View 
|  | 
|  +--High Scores View 
| 
+--High Scores View 

我使用presentModalViewController方法从游戏欣赏到游戏结束视图切换。这很好,但是当我想回到主视图时,我有两层视图可以浏览(我想通过视图关闭游戏,游戏视图直接返回到主视图)。要关闭视图,我正在使用dismissModalViewControllerAnimated,但这不适用于遍历多个视图。有没有办法替换当前的模型视图,而不是在顶部打开一个新视图?

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

在此先感谢您的帮助。

艾伦

+0

标题中有一个错字... – 2010-09-16 20:30:39

+0

谢谢艾哈迈德。固定。 – 2010-09-16 20:38:53

回答

1

除了Alexsander的伟大建议,你可以完全避免使用presentModelViewController:animated:。相反,只需设置活动UIWindowrootViewController属性。

aViewController设置为rootViewController后,请致电[aViewController.view becomeFirstResponder];以使其能够响应触摸输入。


如果presentModelViewController:animated:是像调用一个方法,设置rootViewController是像一个goto。我认为在这里可能更合适一个“goto”,因为视图可以呈现的顺序的循环性质:

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

+0

非常感谢Jon,这非常接近。我现在可以直接从游戏中查看主视图。但是,我的按钮中没有任何按钮在主视图上工作了(最初工作时)。有什么我需要做的,使视图正常活动? – 2010-09-17 20:07:09

+0

我刚刚编辑了我的答案以回应您的评论;见第二段。 – AlcubierreDrive 2010-09-17 20:49:18

+0

谢谢乔恩。现在正在工作。非常感激。 – 2010-09-18 12:33:19

1

如果你的根视图控制器上调用-dismissModalViewController:animated:,这将消除这两个层。

+0

谢谢Alexsander。这有效,但你可以在转到根视图之前简要地看到中间视图。有没有办法避免这种情况? – 2010-09-16 20:07:02

+0

我不确定。对不起...... – 2010-09-16 23:00:48

0

这并不高雅,但永远不会看到中间视图的一种方法是在每件事物下都有一个转换视图(某种默认视图或闪屏)。然后让所有您想要交换的视图都将自己退回到过渡视图,并根据某种下一状态逻辑,让过渡视图控制器呈现下一个要显示的模式视图。你永远不会超过1张视图,所以不会有任何中间视图被看到。