MVVMデザインパターンを使用して、アプリでReactiveCocoaフレームワークを使用しています。
したがって、すべてのコントローラーに対して、ViewModel があります。Controller は彼の ViewModel にバインドされています。
UIButton バインディングは次のようになります。
@implementation HomeController
-(void) bindViewModel {
self.viewHeader.buttonSide.rac_command = self.viewModel.execiteFullPortfolio;
}
それはすべてうまくいきますが、ViewModelにパラメータを渡したいとき、正しい方法がわかりません...
Stocks の UICollectionView があり、特定の株式をクリックするたびに、その株式のプロファイル ページに移動したいとします。そのロジックは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]];
}
これはベストプラクティスではないと確信しています!だから私は尋ねています、何ですか??
ありがとう 。