【发布时间】:2020-09-15 05:38:45
【问题描述】:
我正在开发一个简单的应用程序来在 iOS 中试用 MVVM。我的应用程序中只有两个屏幕。 Screen A 显示内容,用户可以点击settings 按钮拉出screen B。 Screen B 允许用户更改影响screen A 显示内容方式的设置。
- 我应该如何将
screen B中所做的更改传达给screen A,以便screen A可以根据设置更改重新显示内容?在 MVC 中,我将使用协议/委托将ViewControllerB中所做的更改传达给ViewControllerA。由于视图控制器可以直接访问模型,我可以在委托调用中传递更新的模型。在 MVVM 中,ViewModelB到ViewModelA或ViewControllerB到ViewControllerA之间是否会发生通信(如 MVC)。 - 如果视图控制器之间发生通信,那么
ViewControllerB真正传递给ViewControllerA的是什么?ViewModelA?如果是这样,ViewControllerB知道ViewModelA是否会破坏减少视图控制器责任/知识的目的?
感谢您花时间阅读问题!
【问题讨论】:
-
在我看来(我的意思是“意见”),模型类应该代表应用程序中的当前共享状态。视图模型应该与底层模型通信以获取/设置与其视图控制器相关的状态部分。换句话说,我不喜欢在与 UI 相关的类之间传递任何重要的东西。