【发布时间】:2020-12-12 10:53:57
【问题描述】:
我正在开发一个 iOS MVVM + Coordinator/RxSwift 项目(非 swiftUI)。
在groundViewController中,屏幕上有多个项目,用户可以点击任何项目来调用该项目的详细视图。点击一个项目后,详细视图将滑入,当用户点击另一个项目时,详细视图将滑出,然后再次滑入更新信息。 detailView 是半屏大小,用户也可以点击 groundViewController 上的空白区域来关闭详细视图(滑出动画)。(所以只有一个 detailView)
我决定将详细视图制作为 UIView,它将拥有自己的协调器和 ViewModel,并添加到 groundViewControll.view。但是我现在对如何在它们之间或事件流之间进行通信感到困惑。
问题:在 MVVM/Coordinator 模式中,将此流程设置为是否正确:
groundViewController (receive a tap on the object) - >
groundViewModel - >
groundCoordinator (creat and pass itemID ) - >
detailedViewCoordinator (creat) - >
detailedViewModel and detialedView
detialedView 的滑入/滑出动画应该由谁负责?
【问题讨论】:
-
GroundCoordinator 应该负责显示细节并将其关闭。你应该将协调器的路由传递给detailView,它会触发另一个detail,但会先关闭当前detail。
-
那么当详细视图可见时,您仍然可以看到地面视图上的项目并与之交互?
-
@DanielT。你是对的。这也是我选择 UIView 而不是 UIViewController 的原因之一。我刚刚更新了问题以使其更清楚。