多绑定
UITextField *nameTextField
UITextField *pwdTextField
UIButton *loginButton
[[RACSignal combineLatest:@[nameTextField.rac_textSignal, pwdTextField.rac_textSignal]
reduce:^id(NSString *name, NSString *pwd) {
return @(name.length > 0 && pwd.length > 0)
}] subscribeNext:^(id x) {
self.loginButton.enabled = [x boolValue]
}]
实现方式二:
RACSignal *signal = [RACSignal combineLatest:@[nameTextField.rac_textSignal, pwdTextField.rac_textSignal] reduce:^id _Nonnull(NSString *name , NSString *pwd){
return @(name.length && pwd.length)
}]
RAC(loginButton,enabled) = signal
多个请求全部完成后再刷新 UI
- (void)liftSelector {
RACSignal *hotSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"请求热销模块数据");
[subscriber sendNext:@"热销模块数据"];
return nil;
}];
RACSignal *newSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"请求最新模块数据");
[subscriber sendNext:@"最新模块数据"];
return nil;
}];
[self rac_liftSelector:@selector(updateUIWithHotData:newData:) withSignalsFromArray:@[hotSignal, newSignal]];
}
- (void)updateUIWithHotData:(NSString *)hotData newData:(NSString *)newData {
NSLog(@"%@", hotData);
NSLog(@"%@", newData);
}