将服装类传递给下一个视图的正确方法

时间:2014-01-17 20:16:27

标签: objective-c model-view-controller

我已经阅读了很多关于视图之间共享数据的模式。 我知道如何使用委托,segues传递数据(iOS),但我想分享一个更深层次的问题。

假设我有一些任务应用程序,用户创建的每个新任务都是一个名为Task的类的实例,它包含该任务的所有数据(日期,文本等)。 现在,当在viewA中显示表中的任务列表时,用户按下按钮以创建新任务,因此必须创建Task类的对象。 我将用户带到viewB以编辑任务,然后可能会转到viewC

有一些选择是可能的,但对于每一种我都会发现一些不便。

  1. viewA的控制器正在创建Task新对象,并将其传递给b,而不是b到c等。
  2. viewB的控制器正在创建Task新对象,而不是将委托发布到Atask
  3. 似乎正确的选项是1,但它有一些问题,例如在视图控制器B编辑任务之后,viewA的控制器需要用新任务重新加载表 - 无论如何,选项2,发布一个委托从b开始,似乎更简单,所以b创建一个Task对象,而不是将委托发布到A中的表以保存它,并用它重新加载表。 这里的数据封装较少。

    也许我完全错了,但我真的想了解事情应该如何做好。

    任何想法对我都有帮助。

1 个答案:

答案 0 :(得分:0)

或者您可以创建数据模型。

考虑使用TaskManager类来管理任务列表,创建任务,并知道当前选择哪个(或最新创建的)。您的TaskManager可以是单例,也可以通过您的应用程序委托访问。任何需要使用Task完成的任务,TaskManager都会处理。

这样,您可以使视图控制器更加独立,因为它们不会相互通信,而是从负责它的对象读取和更新数据模型的当前状态。