ReactiveCocoa简介三,根据输入框的条件,改变输入框背景颜色
发布时间:2020-12-15 04:40:01 所属栏目:百科 来源:网络整理
导读:(1)创建一些信号,来表示用户名和密码输入框中的输入内容是否有效 //代码对每个输入框的rac_textSignal应用了一个map转换。输出是一个用NSNumber封装的布尔值。 RACSignal *validUsernameSignal = [self.usernameTextField.rac_textSignal map:^id(NSStrin
(1)创建一些信号,来表示用户名和密码输入框中的输入内容是否有效 //代码对每个输入框的rac_textSignal应用了一个map转换。输出是一个用NSNumber封装的布尔值。
RACSignal *validUsernameSignal = [self.usernameTextField.rac_textSignal map:^id(NSString *text) { return @([self isValidUsername:text]); }]; RACSignal *validPasswordSignal = [self.passwordTextField.rac_textSignal map:^id(NSString *text) { return @([self isValidPassword:text]); }]; (2)下一步是转换这些信号,从而能为输入框设置不同的背景颜色。
[[validPasswordSignal map:^id(NSNumber *passwordValid){ return[passwordValid boolValue] ? [UIColor clearColor]:[UIColor yellowColor]; }] subscribeNext:^(UIColor *color){ self.passwordTextField.backgroundColor = color; }]; 合并的写法就是
RAC宏允许直接把信号的输出应用到对象的属性上。
RAC(对象,属性名)每次信号产生一个next事件,传递过来的值都会应用到该属性上。
RAC(self.passwordTextField,backgroundColor) = [validPasswordSignal map:^id(NSNumber *passwordValid){ return[passwordValid boolValue] ? [UIColor clearColor]:[UIColor yellowColor]; }]; RAC(self.usernameTextField,backgroundColor) = [validUsernameSignal map:^id(NSNumber *passwordValid){ return[passwordValid boolValue] ? [UIColor clearColor]:[UIColor yellowColor]; }];
- (BOOL)isValidUsername:(NSString *)username { return username.length > 3; } - (BOOL)isValidPassword:(NSString *)password { return password.length > 3; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |