Я использую инфраструктуру ReactiveCocoa в своем приложении для использования с использованием шаблона проектирования MVVM.Использование RACCommand с шаблоном MVVM, отправка параметров в ViewModel
Итак, для каждого контроллера у меня есть ViewModel. и контроллер привязан к его ViewModel.
UIButton связывания будет выглядеть так:
@implementation HomeController
-(void) bindViewModel {
self.viewHeader.buttonSide.rac_command = self.viewModel.execiteFullPortfolio;
}
Это все работает хорошо, но когда я хотел бы передать параметры ViewModel, я не уверен, что это правильный способ сделать это .. .
Скажем, у меня есть UICollectionView of Stocks, и каждый щелчок на конкретном складе, я бы хотел перейти к странице профиля запасов. Эта логика должна быть сделана на ViewModel, но как мне получить запас, полученный с помощью RACCommand?
То, что я сейчас делаю это:
@implementation HomeController
-(void) bindViewModel {
__unsafe_unretained HomeController *weakSelf = self;
self.viewPortfolioPusherView.scrollGainView.blockSelect =^(STStock *stock){
weakSelf.viewModel.selectedStock = stock;
[weakSelf.viewModel.executeGoToStock execute:[RACSignal empty]];
};
}
@implementation HomeViewModel
-(void) initialization {
self.executeGoToStock = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf moveToSelectedStock];
});
return [RACSignal empty];
}];
}
-(void) moveToSelectedStock {
[self stockProfileControllerLazy];
self.stockProfileController.stock = self.selectedStock;
[Navigator pushController:self.stockProfileController fromController:[self.delegate controller]];
}
Я уверен, что это не лучшая практика! Поэтому я спрашиваю, что такое ???
Спасибо.