cbo*_*wns 13 mvvm ios reactive-cocoa
我正在考虑一个非常简单的ViewModel和ViewController的结构,用于测试应用程序.我有类似的东西:
FirstViewController.m:
- (IBAction)launchButtonSelected:(id)sender
{
    [self.viewModel launchActionSelected];
}
FirstViewModel.m:
- (void)launchActionSelected
{
    // [todo] - Figure this out.
}
当在launchButton中选中时FirstViewController,我想制作并呈现一个SecondViewController.
我的问题:
SecondViewControllerViewModel 有一个可靠的经验法则吗?SecondViewController?SecondViewController视图层次结构?(即导航推送或模态演示).我个人在想:
SecondViewController可能会在其初始化程序中创建.这总是让我走上一条令人困惑的道路:如果我想将信息传递FirstViewModel给我SecondViewModel怎么办?我应该公开SecondViewModel作为公共财产,SecondViewController以便我可以获得/设定价值吗?FirstViewController应该创造SecondViewController,和FirstViewController应该推SecondViewController到屏幕上.我的直觉认为这是次要的:我想更多地隔离ViewControllers的呈现,让应用程序更专注于ViewModel,但这似乎很难做到.(即"推"ViewModels,而非ViewControllers ......但"推"与应用程序的视觉呈现本质上相关,所以也许这是错误的思考方式.)
Ash*_*row 13
好问题.重要的是要记住,无论如何,在iOS上,MVVM是一种新兴的范例,具有新兴的最佳实践.因此,关于硬性规则的第一个问题的答案是,实际上并没有.我个人会在SecondViewController视图模型中创建视图模型,FirstViewController因此可以在它将被使用的上下文中进行配置(即:如果为了响应表视图选择而推送新的视图控制器,索引路径).你对其他两个问题的回答是正确的,至少在我对iOS上的MVVM的解释中是这样.
视图模型不应该访问您的视图,并且由于MVVM将视图和视图控制器形式化为一个单元,因此它们也不应该创建或推送视图控制器.希望有道理.
我在GitHub上写了一个使用MVVM的应用程序.你可以在这里查看.
| 归档时间: | 
 | 
| 查看次数: | 2033 次 | 
| 最近记录: |