2012-03-26 220 views
0

我有3个厂景,视图2和图3。我有鉴于2修改数据的问题,当我在视图3.下面是我能想到的办法的最佳实践

  1. 拉导航控制器栈,识别由iskindof测试的视图,取变量,并改变它
  2. 视图2从的appdelegate获得的值,并从图3我只是在的appdelegate更新它和它的工作原理
  3. 使用通知中心并更改数据。

这是最建议的方式来改变我的情况的数据。

的数据仅仅是一个改变设置值的对象的阵列。 。

+1

[什么是视图控制器之间沟通的最佳方式是什么?(http://stackoverflow.com/q/569940/194544) – beryllium 2012-03-26 07:52:07

回答

1

选项(1)是的让你头疼,如果你做任何进一步的重构上下行风险最高的办法。它也很烦琐,所以存在犯错的风险,然后不得不花费更多时间来修复它们。出于这些原因,最好避免它。

之间选择(2)和(3)容易引起读者的全局意识形态争论,封装等

有很多关于(3),使用UINotificationCenter可说的,即使你不采用认为全局是邪恶的。它鼓励你清楚地思考你正在采用的通信协议,它可以防止应用程序委托中的混乱,它往往是重构最稳定的,如果你想在其他地方重新使用视图,你有一个开始等

特别是与精心设计的通知,你经常会发现,如果你进一步重构的路线,你将有少得多的工作 - 甚至没有 - 让你的代码运行的权利。