经过前面的工作,已经实现了实时监测两个输入信号并作相应的操作,现在下一步要做的就是合并这两个信号;
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];
}];
这样,就实现了当用户名和密码输入有效时,按钮就是可用的.逻辑如下图所示哦:
网友评论