【发布时间】:2015-04-07 23:16:12
【问题描述】:
我正在尝试开发一个简单的应用程序来理解MVVM,但我不太明白。我读过一些文章,但它们有点不同:
在这个例子中,视图不是ViewController 本身,它是一个包含view 的所有细节的类,它是VC 的抽象。
ViewController 使用从数据库、网络检索的一些数据创建 ViewModel。
ViewController 与model 对话并管理ViewModel 以更新view。
ViewController is the view MVVM
在这个例子中,viewController 是视图,它不需要其他类。 viewModel不是由viewController创建的,下一个ViewController的ViewModel是由ViewModel创建的。 ViewModel 也有 Model 的实例,所以如果它需要检索一些数据,它有 DB、Network 的实例。
有些东西我不是很明白。如果viewModel 正在使用异步任务从网络检索数据,并且我想显示一个微调器并获取数据以完成视图。我应该使用blocks、KVO 还是delegates?如果我使用delegates,view 实现ViewModelDelegate 方法,对吗?我是否将view 与viewModel 耦合?在这一点上我很困惑。
如果我有一个firstViewModel,它会为新推送的SecondViewController 创建一个新的secondViewModel,并且FirstViewController 必须在用户弹出推送的SecondViewController 之前更新其视图。在这种情况下firstViewModel 必须观察secondViewModel 并在弹出后通知firstViewController 的更改,不是吗?
我还有一个关于ViewController 创建的问题。 ViewControllers 是下一个 ViewControllers 创建的随从吗?如果我创建了一个管理ViewControllers 创建和导航的对象,我是否应该将此对象传递给viewModels?
我知道它们非常相似,但我对应该实施哪种方式以及如何实施感到困惑。关于iOSMVVM的信息和例子不多。
我还没有使用Reactive Cocoa,因为我想先很好地理解这个模式。虽然它在我的 TO-DO 列表中。
谢谢!
【问题讨论】:
标签: ios objective-c mvvm