登入頁面使用ReactiveCocoa

chenshipeng發表於2017-12-22

一般登入頁面都會對使用者名稱和密碼做一些限定,不符合要求的時候登入按鈕不能點選。

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];
    }];
複製程式碼

這樣就能來判斷登入按鈕能否點選了。

相關文章