ReactiveCocoa学习随笔 三

  经过前面的工作,已经实现了实时监测两个输入信号并作相应的操作,现在下一步要做的就是合并这两个信号;

RACSignal *signUpActiveSignal =

[RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]

reduce:^id(NSNumber*usernameValid, NSNumber *passwordValid) {

return @([usernameValid boolValue]&&[passwordValid boolValue]);

}];

  用combineLatest:reduce:方法把两个信号合并在一起,生成一个新的信号,有任何新值传入,reduce block就会执行,进行相应的处理并输出相应的新信号然后下面就是把新信号和button的状态联系起来,真则enabled,假则disabled

[signUpActiveSignal subscribeNext:^(NSNumber*signupActive) {

self.signInButton.enabled =[signupActive boolValue];

}];

  这样,就实现了当用户名和密码输入有效时,按钮就是可用的.逻辑如下图所示哦:


你可能感兴趣的:(ReactiveCocoa学习随笔 三)