- //subscribeNext:传递给下一个执行
- [self.usernameTF.rac_textSignalsubscribeNext:^(idx){
- NSLog(@"%@",x);
- }];
- //filter:过滤信号
- [[filter:^BOOL(NSString*name){
- returnname.length>3;
- }]idx){
- NSLog(@"%@",x);
- }];
- //map:转换信号的类型
- [[self.passwordTF.rac_textSignalmap:^id(NSString*password){
- return@(password.length);
- }]//创建一个信号
- RACSignal*nameSignal=[NSString*name){
- return@(name.length>3);
- RACSignal*passwordSignal=[return@(password.length>4);
- //利用上一步所得的信号再进行条件判断
- //当不使用subscribeNext时上面的信号不会执行;
- [[nameSignalNSNumber*nameValue){
- return[nameValueboolValue]?[UIColorclearColor]:[UIColorgreenColor];
- UIColor*color){
- self.usernameTF.backgroundColor=color;
- [[passwordSignalNSNumber*passWordValue){
- return[passWordValueself.passwordTF.backgroundColor=color;
- //RAC宏允许您指定一个信号的输出对象的属性。它需要两个参数,第一个是包含属性设置的对象,第二个是属性名。每次信号发出下一个事件,是分配给给定属性的值。
- //下面这段代码与上面的作用相同
- RAC(self.usernameTF,backgroundColor)=[nameSignalself.passwordTF,backgroundColor)=[passwordSignal//结合信号
- RACSignal*siginSignal=[RACSignalcombineLatest:@[nameSignal,passwordSignal]reduce:^NSNumber*nameValue,NSNumber*passWordValue){
- return@([nameValueboolValue]&&[passWordValueboolValue]);
- [siginSignalNSNumber*siginValue){
- self.siginBtn.enabled=[siginValueboolValue];
- self.siginBtnrac_signalForControlEvents:UIControlEventTouchUpInside] NSLog(@"按钮被点击了");
- }];