2013-10-08 27 views
0

我想问的是一个设计问题。谁应该定制CustomUIView的外观

我有一个CustomUIViewController处理控制器视图内的一些子视图。

这两种观点是逻辑上不同的,并且具有不同的角色:

  • 第一子视图包含UIControl对象,用户可以与 (游戏操作)相互作用。
  • 第二个子视图只显示游戏进度。

问题是我需要有多个游戏控件的实现(比方说两个图形完全不同),并让用户选择他喜欢的那个。

我的问题是:将CustomUIViewController的代码与两个游戏控件实现(包括用于自定义每个游戏控件的外观的图形资源)结合起来会被认为是一个好习惯吗?或者如果游戏控制视图的外观设置由另一个对象(工厂,委托或类似的东西)处理,会更好吗?

你能提出任何可以帮助处理这种用例的模式吗?

预先感谢您。

+0

控制器通常会控制。您也可以让控制器监控用户选择的变化,然后在游戏控制视图上设置一个标志。该标志指示在显示时使用哪些图形(并且标志变化会导致重新显示/更改图像资源),具体取决于您当前如何分配有关图像名称的知识。 – Wain

+0

@Wain:哪一个被认为是关于图像名称的最佳实践:将其嵌入到CustomUIViewController中,或者将其放入专门的Game Control视图中? – Gabriele

+1

我会选择他知道图像名称的控制器。我不会说这两者都是最佳做法。只要结构合理且一致,视图就可以指定其默认图像,并向用户(控制器)提供更改它们的选项。如果视图呈现几种显示风格,那么它可以管理这一切。考虑一下'UITableView'和它提供的功能... – Wain

回答

0

我建议你为两个视图创建单独的类,您将在CustomUIViewController上添加两个视图。 然后,您可以在相应的类中添加所需的任何组件和功能。 这将很容易理解代码,如果您希望将某些扩展功能添加到特定的子视图,您也会感到轻松。 不要把所有的东西放在同一个班级,你最终可能会搞砸了。

如果可能的话总是尝试按照MVC Architecure

+0

我完全同意你的看法。两个游戏控制视图将是两个不同的类。它们的内部结构将完全不同,但是每个Game Control类都将向CustomUIViewController公开相同的接口。但是谁应该具备关于图像名称的知识?我应该将其嵌入到专门的游戏控制视图中还是嵌入到包含它的CustomUIViewController中? – Gabriele

0

子类2的UIView你要使用,这样就可以有比添加到您的ViewController 2个自定义视图。

通过这样做,您可以在自定义UIView实现中获得触摸事件,并且这将是一种更简单的方法,然后将所有内容放在同一个类中。