如何更新祖父表格视图

时间:2011-10-09 15:59:27

标签: ios model-view-controller core-data master-detail

我正在研究多视图控制器方案,用户可能会更改最深视图中显示的值。说A是顶部,B是第二,C是第三。

使用C中的导航栏返回B时,必须执行A中的表重新加载。 (表格很小,所以我不打算优化只更新一行)。

使用协议,我认为C应该提供一个协议,而A可以使用委托来执行像#some; someRowIsUpdated'这样的功能。我认为缺点是A应该包含C的标题以了解该协议。当添加一些其他控制器时,比如一些兄弟,必须更新A的来源,添加额外的包含。这对我来说似乎是错误的。

另一种方法是在B实例化C时实例化B和C时从A向下传递一些id。这对我来说似乎也很笨拙。

当C想要通知A做某事时,最好的方法是什么?通知? 我更喜欢让C包含来自A的标题,而不是相反。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为,通知似乎确实是最重要的解决方案。如果您想稍后更改某些内容,它还会为您提供良好的灵活性。

答案 1 :(得分:0)

这是核心数据,您必须小心通知。原因是由于底层持久性存储的某些锁定机制,不应在多个线程上使用核心数据。

因此,为了方便起见,我建议在控制器链中传递唯一的NSManagedObjectContext,甚至是适当的NSManagedObject子类。如果您有权访问数据模型,则无需引用父控制器或与父控制器通信。这也是一个更好的设计模式。

您会发现#importing类和声明属性的几行代码最终将远远少于处理通知。 (恕我直言,也不那么“笨拙”。; - ))