VIPER架构:如何从模块获取返回信息

时间:2015-01-27 18:22:26

标签: ios architecture

我在处理从另一个模块呈现的模块返回某些信息时遇到问题。在我的例子中,我有两个模块,Map和Search。 MapView通知它想要搜索地址,因此MapPresenter开始显示搜索模块的操作(其视图以模态显示)。在搜索模块中,我进行文本搜索,获取结果,显示并选择一个。该选择必须返回到Map模块。如何在不突破界限的情况下实现这一目标?

考虑到,如果我错了,请纠正我,模块之间的通信只能通过路由实现(而不是"跳过"模块之间有通知,完成块等等) on),我实现了这个场景:

viper-flow-chart (对不起,也许序列图会更好)

MapWireframe实现了常规界面,还实现了另一个我称为MapModuleInput的界面,所以当我开始搜索操作(蓝色)时,我会传递给SearchWireframe MapWireframe实现那个界面。

之后,在红色流程中,在SearchView我开始搜索案例,它从交互者获取结果等。之后显示结果并且用户选择一个(绿色),所以选定的结果将通过MapModuleInput界面返回到地图。

那么,这是正确的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确你有搜索的“模块”,它会搜索搜索交互器,检索一些POI并将此结果返回给搜索演示者。您有一个问题,您可以避免,而不是在SearchPresenter中检索结果,只是与地图进行通信并发送查询,然后在MapView中使用SearchInteractor,现在您不必在模块之间发送对象。 如果你需要以你在图中绘制的方式执行此操作,请使用像Core Data这样的DataSource来保存大量的objets,然后在另一个“模块”中检索它。