我已经阅读了很多关于视图之间共享数据的模式。 我知道如何使用委托,segues传递数据(iOS),但我想分享一个更深层次的问题。
假设我有一些任务应用程序,用户创建的每个新任务都是一个名为Task
的类的实例,它包含该任务的所有数据(日期,文本等)。
现在,当在viewA
中显示表中的任务列表时,用户按下按钮以创建新任务,因此必须创建Task
类的对象。
我将用户带到viewB
以编辑任务,然后可能会转到viewC
。
有一些选择是可能的,但对于每一种我都会发现一些不便。
viewA
的控制器正在创建Task
新对象,并将其传递给b
,而不是b到c等。viewB
的控制器正在创建Task
新对象,而不是将委托发布到A
,task
似乎正确的选项是1,但它有一些问题,例如在视图控制器B编辑任务之后,viewA的控制器需要用新任务重新加载表 - 无论如何,选项2,发布一个委托从b开始,似乎更简单,所以b创建一个Task
对象,而不是将委托发布到A
中的表以保存它,并用它重新加载表。
这里的数据封装较少。
也许我完全错了,但我真的想了解事情应该如何做好。
任何想法对我都有帮助。
答案 0 :(得分:0)
或者您可以创建数据模型。
考虑使用TaskManager类来管理任务列表,创建任务,并知道当前选择哪个(或最新创建的)。您的TaskManager可以是单例,也可以通过您的应用程序委托访问。任何需要使用Task完成的任务,TaskManager都会处理。
这样,您可以使视图控制器更加独立,因为它们不会相互通信,而是从负责它的对象读取和更新数据模型的当前状态。