具有多个视图的视图控制器是否合适?

时间:2013-10-31 01:36:26

标签: ios objective-c ipad view controller

关于我正在为学校开发的应用程序,我有一个简单的问题。在我的应用程序中,我们有5个用户可以玩的独特游戏。但是,每个游戏都有2种模式,正常和硬。要做到这一点的最佳方法是什么。目前我将我的第一个游戏作为两个独立的视图控制器,并根据所需的难度进行调用(一个名为normal_cstars和hard_cstars)。我想知道这是否有效,因为每个视图控制器都有.h,.m和.xib。是否可以让视图控制器具有两个单独的视图,您将如何实现此目的。

谢谢,

Ryan Wong

2 个答案:

答案 0 :(得分:0)

当然。您可以选择在viewcontrollers中显示的两个视图中的哪一个。只需在视图控制器中发送self.view即可作为您要使用的视图。

构建此方法的一种方法是拥有两个共享相同控件的独立视图类。控件全部由视图控制器处理,而每个视图都绘制自己的布局。

并且不要担心在两个主要视图之间共享子视图 - 或者您可以保留两个视图控制器,并且只有共享类来构成每个视图控制器的视图和控件介绍。仅仅因为你有两个视图控制器并不意味着你必须有冗余代码。将内容分成不同的类,从动画视图到控件。

还有很多其他可能性。查看Apple的一些示例,了解如何使用多个视图控制器。

答案 1 :(得分:0)

你真的认为你需要两个不同的观点吗? (虽然我不确定你的比赛)

由于游戏模式是特定于模型的,因此行为为“正常”或“硬”的模型实际上会在视图中呈现游戏。

如果不久的将来,如果您想要实现“简单”模式,那么您最终会得到另一个视图控制器并可能会遇到代码冗余。

解决方案我会想:

  • 为您的模型对象创建inheritance over composition pattern
  • 视图控制器将更加通用,并告诉视图基于模式进行渲染
  • 现在模型的基类将实现泛型方法,并且由于模型具有模式作为组合,视图将基于它呈现游戏对象。

优点? - 我们没有违反开放原则。

此外,还有各种设计模式可以实现这一目标。由您自己决定最适合要求的那些。