VIPER 架构:如何从模块中获取 return 信息

VIPER architecture: how to obtain return info from a module

我在处理 return 某个模块中已由另一个模块提供的某些信息时遇到问题。在我的例子中,我有两个模块,地图和搜索。 MapView 通知它要搜索地址,因此 MapPresenter 开始显示搜索模块的操作(其视图以模态方式显示)。在搜索模块中,我进行文本搜索,获取结果,显示结果和 select 一个。 selection 必须 returned 到 Map 模块。我怎样才能在不打破界限的情况下实现这一目标?

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

(不好意思,也许顺序图会更好)

MapWireframe 实现了常规接口,但也实现了另一个我称为 MapModuleInput 的接口,所以当我开始搜索操作(蓝色)时,我将 SearchWireframe 传递给 MapWireframe 实现该接口。

之后,在红色流程中,在 SearchView 我开始搜索的情况下,它从交互器等处获取结果。然后显示结果并向用户显示 select一个(绿色),因此 selected 结果通过 MapModuleInput 界面 returned 到地图。

所以,这是正确的吗?

谢谢!

如果我理解正确的话,您有一个 "module" 搜索,它使用搜索交互器进行搜索,检索一些 POI 并将此结果 returns 提供给搜索呈现器。您有一个可以避免的问题,而不是在 SearchPresenter 中检索结果,只需与地图通信并发送查询,然后在 MapView 中使用 SearchInteractor,现在您不必在模块之间发送对象。 如果您需要按照您在图表中绘制的方式执行此操作,请使用像核心数据这样的数据源来保存巨大的对象并稍后在另一个 "module".

中检索它