【问题标题】:How to correctly send data/call module from another module in VIPER (swift)?如何从 VIPER(swift)中的另一个模块正确发送数据/调用模块?
【发布时间】:2021-10-26 06:48:14
【问题描述】:

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

如果是普通项目我调用popToRoot,获取根视图控制器并直接调用someFunc()。但是如何正确使用 VIPER 架构呢?

【问题讨论】:

    标签: swift navigation viper-architecture


    【解决方案1】:

    我建议两种方法:

    1) 实现一个 Coordinator。 让 Coordinator 知道有一个 navigationController,并让每个 Router 都可以访问它,大概是双向的。然后,Coordinator 可以在 Module3 完成后调用 Module1 的方法。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多