6

这对我来说是一个严重的问题。使用具有大约 4-5 层深度的多层子视图控制器的代码库工作 - 这是一个在视图控制器之间具有高度解耦的平板电脑应用程序。第 5 层子 viewcontroller 想要向顶层 viewcontroller 发送消息以显示模态。第 4 层和第 3 层也有不同的消息,所以基本上现在我有 4 个协议,并且将消息从嵌套在深处的子视图控制器发送到祖先视图控制器变得非常复杂。有没有更简单的方法来做到这一点?

我们考虑过使用 NSNotification 但并不是特别喜欢它,因为它难以调试并且订阅不是我们控制范围内的明确依赖项。我们还考虑过使用单例,但静态和单例是邪恶的(对吗?),并且会导致状态和并发方面的问题。

任何帮助表示赞赏。我也意识到我意识到这是一个稍微开放式的基于设计的问题,但它有一个非常具体的用例(就像上面描述的那样)。

4

1 回答 1

0

是一个有趣的问题,但我想我们需要一些提示,例如方案。
第一个想法是为什么你需要添加嵌套的孩子?您不能使用简单的堆栈和单个 Container VC 进行管理吗?您管理风险投资的方式似乎不正确。如果需要通知他们模型的变化,应该只有可见的才能捕获它们,在其他人的 viewWill/Did/appear 中,您可以再次询问新数据。如果您需要告知每个 VC 他们的状态,我认为您应该修改您的层次结构。
我想象一个带有堆栈或一组 VC 和可见 VC 属性的容器 VC。这个容器将管理信息的交换。正如 rdelmar 所说,这似乎是一个非常高的耦合度。您应该重新考虑仅在容器和可见 VC 之间看到通信的方式,其他人可以在它们出现时刷新它们的数据。

于 2013-07-31T05:42:59.583 回答