我在处理从另一个模块提供的模块返回的某些信息时遇到问题。在我的例子中,我有两个模块, map 和搜索。 MapView
通知它要搜索地址,因此 MapPresenter
开始显示搜索模块的操作(其 View 以模态方式显示)。在搜索模块中,我进行文本搜索,获取结果,显示并选择一个。该选择必须返回到 map 模块。我如何才能在不打破界限的情况下实现这一目标?
考虑到,如果我错了,请纠正我,模块之间的通信只能通过路由来实现(而不是在带有通知、完成 block 等的模块之间“跳转”),我实现了这个场景:
(抱歉,也许顺序图会更好)
MapWireframe
实现了常规接口(interface),但也实现了另一个我称为 MapModuleInput
的接口(interface),因此当我开始搜索操作(蓝色)时,我将传递给 SearchWireframe
实现该接口(interface)的 MapWireframe
。
之后,在红色流程中,在 SearchView
中,我开始搜索案例,它从交互器等处获取结果。之后显示结果,用户选择一个(绿色), 所以选择的结果通过MapModuleInput
接口(interface)返回给 map 。
那么,这是正确的吗?
谢谢!
最佳答案
如果我理解正确的话,您有一个搜索“模块”,它使用搜索交互器进行搜索,检索一些 POI 并将此结果返回给搜索呈现器。您有一个可以避免的问题,而不是在 SearchPresenter 中检索结果,只需与 map 通信并发送查询,然后在 MapView 中使用 SearchInteractor,现在您不必在模块之间发送对象。 如果您需要按照您在图表中绘制的方式执行此操作,请使用像核心数据这样的数据源来保存巨大的对象并稍后在另一个“模块”中检索它。
关于ios - 毒蛇架构 : how to obtain return info from a module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177377/