在iOS中显示多个视图的最佳实践

时间:2011-12-09 06:51:55

标签: iphone objective-c ios ipad ios5

我正在尝试构建一个教育应用程序,它将拥有大约3-5个完全不同的页面/屏幕。每个屏幕包含一个谜题,每个谜题独立于所有其他谜题(屏幕)。一旦解决了当前屏幕上的拼图,我想转换到一个新的(随机选择的)屏幕。我会允许多次显示相同的谜题,但是,如果它在需要重置之前已经显示过。

我尝试过使用segues但这似乎需要一个UINavigationController,这不是我想要呈现的体验(因为它需要预定义的屏幕层次结构)。

我认为最好的方法是将每个屏幕作为完全独立的UIViewControllers,对吗?我只是不确定如何协调它们之间的导航/渲染。

我很欣赏你所知道的最佳实践。谢谢!

4 个答案:

答案 0 :(得分:2)

这里有一个可能的选择:

首先,如果您希望这些谜题之外的菜单将其作为UINavigationController中的根视图控制器。

然后创建一个启动器控制器并在适当时将其添加到导航控制器。这将是一个常规的UIViewController,除了在viewWillAppear方法中的这个控制器中,它选择一个随机数0-5并通过一个开关运行它,并根据数字推送你的一个视图控制器。然后当拼图完成时,在导航控制器上调用popViewController。现在当它弹回时,viewWillAppear将再次被调用并随机推送另一个。然后,如果您想随时返回主菜单,请拨打popToRootViewControllerAnimated。这应该做你需要的。并且要做到这一点,它没有动画两次要么只有推动动画或只有流行音乐。

答案 1 :(得分:0)

您可以拥有一个控制器,而不是拥有不同的视图控制器。完成第一个后,您可以重新加载拼图视图。你申请第一个谜题的逻辑将是与其他谜题类似的一些逻辑。所以现在只需要处理拼图的不同状态。 例如:我有第一个视图有拼图3x3矩阵,下一个将是4x4矩阵,下一个将是5x5矩阵。所以这个状态需要通过视图控制器中的代码来处理。

答案 2 :(得分:0)

我知道使用cocos2d是构建游戏的好方法,它允许不同的“场景”,在这些场景中,事物彼此独立,或者如果您愿意,可以进行交流。还有cocos2d,有一个“导演”处理所有场景,可以为你推送场景。如果您好奇,请查看:www.cocos2d-iphone.org

我希望这会有所帮助:)

答案 3 :(得分:0)

好吧,我正在构建昨天测试的应用程序来播放不同的乐器。我使用UIView来处理我的3个乐器的视图。逻辑很简单。我将导航放在UIButton上,并为每个乐器添加subview。当用户触摸按钮时,所选视图将添加到前面,最后一个视图将在后台发布或临时。

希望它会对你有所帮助。