一般登入頁面都會對使用者名稱和密碼做一些限定,不符合要求的時候登入按鈕不能點選。
RACSignal *validUsernameSignal = [self.userNameTF.rac_textSignal map:^id _Nullable(NSString * _Nullable text) {
return @([self isValidUsername:text]);
}];
RACSignal *validPassworldSignal = [self.pwdTF.rac_textSignal map:^id _Nullable(NSString * _Nullable text) {
return @([self isValidPassword:text]);
}];
複製程式碼
建立的兩個訊號,對使用者名稱和密碼做一些判斷。 也可以對屬性進行一些繫結:
RAC(self.pwdTF,backgroundColor) = [validPassworldSignal map:^id(NSNumber *passwordValid) {
return [passwordValid boolValue]?[UIColor clearColor]:[UIColor yellowColor];
}];
RAC(self.userNameTF,backgroundColor) = [validUsernameSignal map:^id (NSNumber *validUsername) {
return [validUsername boolValue]?[UIColor clearColor]:[UIColor yellowColor];
}];
複製程式碼
合併兩個訊號成為一個:
RACSignal *signUpActiveSignal = [RACSignal combineLatest:@[validUsernameSignal,validPassworldSignal] reduce:^id(NSNumber *usernameValid,NSNumber *passwordValid){
return @([usernameValid boolValue] && [passwordValid boolValue]);
}];
[signUpActiveSignal subscribeNext:^(NSNumber *signupActive) {
self.signInButton.enabled = [signupActive boolValue];
}];
複製程式碼
這樣就能來判斷登入按鈕能否點選了。