2012-12-12 26 views
4

目前我正在使用Singleton类来完成一些工作,但我想知道是否有更好的东西。班级管理视图控制器流程模式

我有一个完全动态的工作流程的应用程序。它使用导航控制器,但视图控制器的顺序完全取决于从我们的服务器下载的一些数据。

整个工作流程被下载并保存在一个数组中。

该应用程序的“主菜单”屏幕有几个选项(设置,最近等...),这些都是固定的,但其中一个是动态的。它始终以相同类型的视图控制器开始,但从此开始取决于您选择的内容。

说明

有4种不同类型的这些动态控制器。

  • 表视图控制器具有单选择和详细指标。
  • 带有多个选择和复选标记的表视图控制器。
  • 带有文本字段和键盘的视图控制器。
  • 用于在服务器上搜索帐户的视图控制器(与其他相关的VC)。

当您在主菜单上按下选项“新建事件”时,菜单将关闭到单身(EventManager)并告诉它开始一个新事件。

单身人员然后在导航控制器上推动单个选择动态视图,并为其提供初始选项。

从这里单身人士拿起所有的选择,并找出接下来需要什么类型的视图。

我希望这是决策意识

反正,我不喜欢单例模式这里,我不认为它应该是一个单例。

我想要的是一个我可以从ViewController创建的类,然后这个类将控制不同视图控制器负载之间的推送和弹出以及数据流。然后,当您返回主菜单时,此课程可能会消失,因此我每次都会创建一个新课程。

有没有一种模式,我可以看看会做到这一点?还是应该像现在一样坚持单身?

我希望这是有道理的。

编辑

我可以用这个UIPageViewController?那么UIPageViewController的数据源/委托对象将代替我正在使用的Singleton ...或其他东西?

将相片从Twitter请求

enter image description here

每个VC沿水流不知道什么凸轮之前或随之而来。他们所做的就是回电给单身人士说:“这个数值已被选中”或“这个文本已被输入”等等......

然后,单身人士存储那个信息并计算出接下来会发生什么并将下一个VC推到堆栈。

它需要能够移动沿着堆回去,这样用户可以返回改变的东西等等

这一切工作,因为它是我只是不喜欢使用单例。

回答

1

很多评论在这里按重要性顺序。

你在这里描述的一切听起来都非常好,甚至到了命名。 “EventManager”类似于它管理系统中所有“事件”的声音(所以我期望有一个类叫Event,但这是一个小小的诡计,名字可能仍然非常好)。还有其他好的设计,但我不会有任何问题与你的。

我同意这看起来很适合UIPageViewController。你当然应该调查一下,看看它是否合适。如果可以的话,使用内置控制器总是很好的。

没有理由强烈避免单身人士。它们是iOS开发的一个自然部分,在可可设计中非常普遍。他们通常应该是"shared" singletons(绝不会创建“严格”的单身人士,覆盖+allocWithZone:)。这只是创建一个易于访问的实例,而不是一个真正的“单身人士”。这是类似于NSNotificationCenter这样的工作方式,并且通常是非常好的模式。

单身是最好的,当系统的许多随机部分需要直接访问它们并将它们传递给每个人都会有很大的开销(特别是如果许多部分你必须通过对象不要需要它自己)。再次,想想NSNotificationCenter。如果它的用户大多是连续的(即大多数对象可以通过它自己真正需要它),那么只需在程序开始时创建一个并传递它。这听起来像你的情况,所以你对此的直觉似乎很好。只是解除它并传递它。易于更改。

但我肯定会深入探究UIPageViewController。它可以很好地匹配你的问题。

+1

非常感谢。我想我只是想对我使用的模式进行验证。我会看看UIPageViewController,但不太紧急,要扔掉我的东西。我知道很多人使用单例作为一个实例的懒惰方式,我只是想确保当另一个选项可用时我没有这样做。谢谢。 (另外,还有一个叫Event:D的班级) – Fogmeister

+0

再次感谢您的评论。在看到您的帐户后,我做了一些搜索,实际上我刚刚购买了您的书。大声笑。再次感谢您的回复,毫无疑问,我将从本书中获得更多有用的帮助。 :-) – Fogmeister

相关问题