使用reactivecocoa实现UICollectionViewDataSource方法

时间:2014-05-27 08:30:04

标签: ios objective-c uicollectionview reactive-cocoa

我正在尝试学习RAC,而且我已经看到了如何使用rac_signalForSelector实现委托方法。我使用UICollectionView来显示一些数据,并且我已使用此解决方案处理了所有必需的UICollectionViewDelegate方法。例如,这是一个collectionView:didSelectItemAtIndexPath:实现:

[[weakSelf rac_signalForSelector:@selector(collectionView:didSelectItemAtIndexPath:) fromProtocol:@protocol(UICollectionViewDelegate)] subscribeNext:^(RACTuple *arguments) {
        __strong MainViewController *strongSelf = weakSelf;
        NSIndexPath *indexPath = arguments.second;
        DetailViewModel *viewModel = [[DetailViewModel alloc] initWithModel:strongSelf.viewModel.model[indexPath.item]];
        DetailViewController *viewController = [[DetailViewController alloc] initWithViewModel:viewModel];
        [strongSelf.navigationController pushViewController:viewController animated:YES];
}];

我想知道是否有可能实现这样的UICollectionViewDataSource方法,因为它们也有返回值。

1 个答案:

答案 0 :(得分:2)

简短回答 -

Reactive Cocoa是一个反应式框架,您应该以反应性的方式设计您的应用逻辑而不是主动。这意味着你应该对某些事件作出反应并对此采取行动 作为示例 - 用户单击一个单元格并获得RAC事件,您可以操纵该事件(映射,过滤,与其他事件结合等)。

这是不可能的,因为Reactive Cocoa是为基于推送的API 而设计的,用于组合和转换值流。