ReactiveCocoa開發中常見用法

chenshipeng發表於2017-12-15

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引數的方法。 使用注意:幾個訊號,引數一的方法就幾個引數,每個引數對應訊號發出的資料。

相關文章