我使用MVVM作为我的视图控制器,我面临一个问题,我不确定什么是最好的解决方法。基本上,视图控制器A显示一个表视图,该视图使用视图模型A中的数据填充。每个单元都有自己的视图模型。视图模型A负责创建这些视图模型并将它们公开给视图控制器。但是现在我选择了其中一个项目,我发现我的模型(我需要传递给另一个视图控制器的数据,因此它可以创建自己的视图模型)可以隐藏在视图模型后面。视图模型不应该公开模型,但是我怎么能将这些数据传递给另一个视图控制器?单元格视图模型是否还要公开其他视图控制器所需的所有内容并仅传递该视图模型?这看起来也不对。
答案 0 :(得分:2)
在评估和讨论本文中列出的建议后,我决定采用一种方法,其中视图控制器A的视图模型负责创建视图控制器B的视图模型,考虑到它是具有数据。我从http://www.martinrichter.net/blog/2015/08/20/navigation-with-mvvm-on-ios/得到了方法,我认为这是不破坏MVVM抽象的最好方法。
答案 1 :(得分:1)
我强烈建议使用protocols
传递数据。您可以将视图控制器设置为接收数据,作为将从中发送数据的视图控制器的delegate
。委托是iOS中非常广泛使用的模式,因为iOS本身的大部分体系结构都是围绕它设计的。
如果您需要帮助或希望看到一些可以完成此操作的代码,请告诉我。