【问题标题】:Pass data to UIViewController under MVVM pattern在 MVVM 模式下将数据传递给 UIViewController
【发布时间】:2017-08-02 14:13:30
【问题描述】:

我正在为我的视图控制器使用 MVVM,但我遇到了一个问题,我不确定什么是解决它的最佳方法。基本上,视图控制器 A 显示了一个表格视图,其中填充了来自视图模型 A 的数据。每个单元格都有自己的视图模型。视图模型 A 负责创建这些视图模型并将它们公开给视图控制器。但是现在我选择了其中一项,我发现我的模型(我需要传递给另一个视图控制器的数据,以便它可以根据该数据创建自己的视图模型)隐藏在视图模型后面。视图模型不应该公开模型,但是我怎么能将这些数据传递给另一个视图控制器呢?单元格视图模型是否也应该公开其他视图控制器所需的所有内容并仅传递该视图模型?这似乎也不对。

【问题讨论】:

  • 放弃 MVVM 以摆脱所有开销怎么样?
  • 我为此使用协议和委托。
  • @meaning-matters 我发现 MVVM 是一种很好的模式,可以让我的视图控制器保持简短和独立的职责,我不想放弃它。

标签: ios mvvm


【解决方案1】:

在评估和尝试了这篇文章中列出的建议之后,我决定采用一种方法,即视图控制器 A 的视图模型负责创建视图控制器 B 的视图模型,因为它具有数据。我从http://www.martinrichter.net/blog/2015/08/20/navigation-with-mvvm-on-ios/ 那里得到了方法,我认为这是不破坏 MVVM 抽象的最佳方法。

【讨论】:

    【解决方案2】:

    我强烈建议使用protocols 来传递数据。您可以将接收数据的视图控制器设置为发送数据的视图控制器的delegate。委托是 iOS 中非常广泛使用的模式,因为 iOS 本身的大部分架构都是围绕它设计的。

    如果您需要帮助或希望查看一些可以完成此任务的代码,请告诉我。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2020-02-08
      • 2020-01-27
      • 1970-01-01
      • 2020-12-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多