ios – MVVM并推动ViewController:在哪里初始化下一个ViewController和ViewModel,并推动新视图?

前端之家收集整理的这篇文章主要介绍了ios – MVVM并推动ViewController:在哪里初始化下一个ViewController和ViewModel,并推动新视图?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑一个非常简单的viewmodel和ViewController的结构,用于测试应用程序.我有一些类似的东西:

FirstViewController.m:

- (IBAction)launchButtonSelected:(id)sender
{
    [self.viewmodel launchActionSelected];
}

Firstviewmodel.m:

- (void)launchActionSelected
{
    // [todo] - Figure this out.
}

当在FirstViewController中选择launchButton时,我想制作和呈现SecondViewController.

我的问题:

>我应该在哪里创建SecondViewController的viewmodel有一个坚实的经验法则?
>谁应该初始化SecondViewController?
>在哪里应该将SecondViewController推送到视图层次结构? (即导航推动或模态呈现).

我个人认为:

> SecondViewController的viewmodel可能会在其初始化器中创建.这总是导致我一个混乱的路径:如果我想把信息从Firstviewmodel传递给Secondviewmodel?我应该在SecondViewController上公开Secondviewmodel作为一个公共属性,以便我可以获取/设置值吗?
> FirstViewController应该创建SecondViewController,和
> FirstViewController应该将SecondViewController推送到屏幕上.

我的直觉认为这是一个比较简单的:我想隔离ViewControllers的演示文稿一点,让应用程序更加以viewmodel为重点,但这似乎很难做到. (即“推”viewmodels,而不是ViewControllers …但是“push”与应用程序的视觉呈现本质上相关,所以也许这是错误的思考方式.)

解决方法

很好的问题重要的是要记住,在iOS上,MVVM是一个正在出现的最新实践的新兴范例.所以你的第一个问题的答案是关于艰难和快速的规则是没有真正的.我个人将在FirstViewController的视图模型中创建SecondViewController的视图模型,因此可以在将被使用的上下文中进行配置(即:如果新的视图控制器被推送以响应表视图选择,索引路径).您对其他两个问题的答案是正确的,至少在我对iOS上的MVVM的解释中.

视图模型不应该访问您的视图,并且由于MVVM将视图和视图控制器视为一个单元,因此也不应该创建或推送视图控制器.希望有道理

我在GitHub上写了一个使用MVVM的应用程序.你可以看看here.

原文链接:https://www.f2er.com/iOS/336006.html

猜你在找的iOS相关文章