如何正确发送数据/呼叫模块从另一个模块在VIPER (swift)?



Router包含一个指向导航控制器的链接,其中包含堆叠的1,2,3个视图控制器(来自1,2,3个模块)。现在模块3命令路由器navigationController.popToRoot,应该从模块1调用someFunc()

如果是通常的项目,我调用popToRoot,获得根视图控制器并直接调用someFunc()。但是如何用VIPER架构正确地做到这一点呢?

我建议有两种方法:

1)实现一个协调器。让协调器知道存在一个navigationController,并使每个Router都可以访问它,假设是双向的。然后,当Module3完成后,Coordinator可以调用Module1的方法。

2)实现通知系统。只需在Module3的Router中继续调用popToRoot,并向NotificationCenter发送通知。因为Module1仍然是活的(因为它们是堆叠的),所以它可以采取相应的行动/反应。

我会投票给第一个选项,在VIPER中有一个协调器极大地(和主观上)帮助路由。

相关内容

  • 没有找到相关文章

最新更新