ReactiveCocoa开发中常见用法

2017-06-23  本文已影响10人  csp

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参数的方法。
使用注意:几个信号,参数一的方法就几个参数,每个参数对应信号发出的数据。

上一篇下一篇

猜你喜欢

热点阅读