ReactiveCocoa开发中常见用法
7.1 代替代理:
rac_signalForSelector:用于替代代理。
[[self rac_signalForSelector:@selector(userDidScroll:toPhotoAtIndex:) fromProtocol:@protocol(FRPFullSizePhotoViewControllerDelegate)] subscribeNext:^(RACTuple *value) {
@strongify(self);
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:[value.second integerValue] inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
}];
[[self rac_signalForSelector:@selector(collectionView:didSelectItemAtIndexPath:) fromProtocol:@protocol(UICollectionViewDelegate)] subscribeNext:^(RACTuple *arguments) {
@strongify(self);
NSIndexPath *indexPath = arguments.second;
FRPFullSizePhotoViewModel *viewModel = [[FRPFullSizePhotoViewModel alloc] initWithPhotoArray:self.viewModel.model initialPhotoIndex:indexPath.item];
FRPFullSizePhotoViewController *viewController = [[FRPFullSizePhotoViewController alloc] init];
viewController.viewModel = viewModel;
viewController.delegate = (id<FRPFullSizePhotoViewControllerDelegate>)self;
[self.navigationController pushViewController:viewController animated:YES];
}];
2、 代替KVO :
rac_valuesAndChangesForKeyPath:用于监听某个对象的属性改变。
3、 监听事件:
rac_signalForControlEvents:用于监听某个事件。
4、 代替通知:
rac_addObserverForName:用于监听某个通知。
5、 监听文本框文字改变:
rac_textSignal:只要文本框发出改变就会发出这个信号。
6、 处理当界面有多次请求时,需要都获取到数据时,才能展示界面
rac_liftSelector:withSignalsFromArray:Signals:当传入的Signals(信号数组),每一个signal都至少sendNext过一次,就会去触发第一个selector参数的方法。
使用注意:几个信号,参数一的方法就几个参数,每个参数对应信号发出的数据。