button需要兩個(gè)textFeild的輸入才能激活
? ? RAC(self.viewModel, expressNumber) =self.expressNumberTextField.rac_textSignal;//手動(dòng)設(shè)置了UITextField的textself.expressNumberTextField.text =@"10937374783";
//結(jié)果self.viewModel.expressNumber沒有變化,還是原來值
? ? @weakify(self);
[[RACSignalmerge:@[self.expressNumberTextField.rac_textSignal, RACObserve(self.expressNumberTextField, text)]]subscribeNext:^(NSString* text){ @strongify(self);self.viewModel.expressNumber = text; }];
? ? RAC(self.submitBtn, enabled) = [RACSignal? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?combineLatest:@[RACObserve(self.nameTextField, text),RACObserve(self.numberTextField, text),RACObserve(self.faceView.IDView, image),RACObserve(self.nationView.IDView, image)]? ? ? ? ? reduce:^id(NSString*username,NSString*passwordNumber){
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return@(username.length>=1&& (passwordNumber.length==15|| passwordNumber.length==18)&&self.faceView.IDView.image&&self.nationView.IDView.image);
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }];
后來發(fā)現(xiàn)這樣的話如果點(diǎn)擊textFeild的時(shí)候是不會(huì)經(jīng)過這個(gè)判斷的,這樣是不符合要求的。
后來經(jīng)過與上面的代碼的融合。
``` javascript
? ? ?[[RACSignal merge:@[self.nameTextField.rac_textSignal,RACObserve(self.nameTextField, text)]]subscribeNext:^(NSString* text){
? ? ? ? weakRef.viewModel.IDCardName= text;
? ? }];
? ? [[RACSignal merge:@[self.numberTextField.rac_textSignal,RACObserve(self.numberTextField, text)]]subscribeNext:^(NSString* text){
? ? ? ? weakRef.viewModel.IDCardNumber= text;
? ? }];
? ? RAC(self.submitBtn, enabled) = [RACSignal
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? combineLatest:@[RACObserve(self.viewModel, IDCardName),RACObserve(self.viewModel, IDCardNumber)]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reduce:^id(NSString*username,NSString*passwordNumber){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return@(username.length>=1&& (passwordNumber.length==15|| passwordNumber.length==18)&&self.faceView.IDView.image&&self.nationView.IDView.image);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }];
```
先說明RAC中merge與combineLatest的區(qū)別,可以說merge是“或”,而combine是“且”的的意思。merge是兩個(gè)信號(hào)之中只要有一個(gè)以上的信號(hào)發(fā)出,就觸發(fā)條件。而combine就是需要同時(shí)兩個(gè)信號(hào)發(fā)出才能觸發(fā)。