MVVM模式和故事板iOS
当项目包含故事板时,有人能告诉我如何实现MVVM模式吗 在许多示例中,我看到必须使用MVVM模式和故事板iOS,ios,design-patterns,mvvm,Ios,Design Patterns,Mvvm,当项目包含故事板时,有人能告诉我如何实现MVVM模式吗 在许多示例中,我看到必须使用.xib文件。和initViewControllers如下所示: -(instancetype)initWithModelView:(ViewModel *)viewModel{ self = [super init]; if(self){ _viewModel = viewModel; } return self; } 但是有了故事板,我无法initvi
.xib
文件。和init
ViewControllers
如下所示:
-(instancetype)initWithModelView:(ViewModel *)viewModel{
self = [super init];
if(self){
_viewModel = viewModel;
}
return self;
}
但是有了故事板,我无法init
viewControllers
,故事板可以帮我做到这一点。
我应该改用属性吗
i、 e
self是
UITabBarController
您可以在UIViewController的prepareforsgue:sender:
方法中初始化viewModel
属性
下面是一个指向MVVM应用程序示例的链接
该应用程序中的viewModel
初始化示例:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
ASHDetailViewController *viewController = segue.destinationViewController;
viewController.viewModel = [self.viewModel detailViewModelForIndexPath:indexPath];
} else if ([[segue identifier] isEqualToString:@"editRecipe"]) {
ASHEditRecipeViewController *viewController = (ASHEditRecipeViewController *)[segue.destinationViewController topViewController];
viewController.viewModel = [self.viewModel editViewModelForNewRecipe];
}
}
隐马尔可夫模型。。。这是否意味着在Swift中,视图控制器的viewModel
属性需要隐式展开?我想是这样的。下面是swift中MVVM应用程序的真实示例(带有故事板):。它们在视图控制器内创建视图模型(如lazy var
),但它们通过显式展开的选项在prepareforsgue
中提供参数。错误。。。通过隐式展开的选项。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
ASHDetailViewController *viewController = segue.destinationViewController;
viewController.viewModel = [self.viewModel detailViewModelForIndexPath:indexPath];
} else if ([[segue identifier] isEqualToString:@"editRecipe"]) {
ASHEditRecipeViewController *viewController = (ASHEditRecipeViewController *)[segue.destinationViewController topViewController];
viewController.viewModel = [self.viewModel editViewModelForNewRecipe];
}
}