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”与应用程序的视觉呈现本质上相关,所以也许这是错误的思考方式.)
解决方法
视图模型不应该访问您的视图,并且由于MVVM将视图和视图控制器视为一个单元,因此也不应该创建或推送视图控制器.希望有道理
我在GitHub上写了一个使用MVVM的应用程序.你可以看看here.