目前我正在使用Singleton类做一些工作,但我想知道是否有更好的东西。
我的应用程序具有完全动态的工作流程。它使用导航控制器,但视图控制器的顺序完全取决于从我们的服务器下载的一些数据。
整个工作流程已下载并保存在一个数组中。
应用程序的“主菜单”屏幕有几个选项(设置,最近等等),这些是固定的,但其中一个是动态的。它始终以相同类型的视图控制器开始,但从那时起它取决于您选择的内容。
描述
这些动态控制器有4种不同类型。
当你按下主菜单上的“新事件”选项时,菜单会转到单例(EventManager)并告诉它开始一个新事件。
单身人士然后在导航控制器上推送单个选择动态视图,并为其提供初始选项。
从这里开始,单身人士会选择所有选择,然后确定接下来需要什么类型的视图。
我希望这是有道理的
无论如何,我不喜欢这里的单身人士模式,因为我认为它不应该是单身人士。
我想要的是一个可以从ViewController创建的类,然后该类将控制不同视图控制器之间的数据推送和弹出以及数据流。然后当你回到主菜单时,这个课程可以消失,所以我每次都会创建一个新课程。
我能看到的模式是否可以做到这一点?或者我应该像现在这样坚持单身?
我希望这是有道理的。
修改
我可以使用UIPageViewController吗?那么UIPageViewController的datasource / delegate对象将取代我目前正在使用的Singleton ......或者什么?
从TWITTER请求添加照片
流程中的每个VC都不知道前面有什么凸轮或接下来会发生什么。他们所做的只是回到单身人士说“这个值已被选中”或“此文本被输入”等...
单身人士然后存储该信息并找出接下来发生的事情并将下一个VC推入堆栈。
它需要能够沿堆栈向后移动,以便用户可以返回更改某些内容......
这一切都正常,因为我只是不喜欢使用单身人士。
答案 0 :(得分:1)
这里的评论很重要。
你在这里描述的一切听起来都很好,甚至到了命名。 “EventManager”听起来像管理系统中的所有“事件”(所以我希望有一个名为Event
的类,但这是一个微小的狡辩,名称可能仍然非常好)。还有其他好的设计,但我不会有任何问题。
我同意这看起来非常适合UIPageViewController
。你当然应该调查一下,看看它是否合适。如果可以的话,使用内置控制器总是很好。
没有理由强烈避免单身人士。它们是iOS开发的自然组成部分,在良好的Cocoa设计中相当普遍。它们通常应为"shared" singletons(永远不会创建覆盖+allocWithZone:
的“严格”单例)。这只是创建一个易于访问的实例而不是真正的“单例”。这就像NSNotificationCenter
之类的工作方式一样,并且通常是非常好的模式。
当系统的许多随机部分需要直接访问它们并将它们传递给每个人时,单身人士是最好的,这将是一个很大的开销(特别是如果许多部分你必须传递对象不需要它自己)。再次,想想NSNotificationCenter
。如果它的用户大部分是连续的(即大多数对象你都会将它传递给实际需要它),那么只需在程序开头创建一个并传递它。这听起来像你的情况,所以你对它的直觉似乎很好。只需将它解单并传递它。容易改变。
但我肯定会深入研究UIPageViewController
。它可以很好地匹配你的问题。