1.监听成员变量变化,当成员变量值被改变时触发,其实就是KVO机制使用场景,
通常有三个步骤
<1>. 给对象的成员变量添加监听
<2>. 实现监听回调
<3>. 取消监听;
而通过 RAC也可以实现,RAC的回调是通过block实现的
egOne: 值变化时发送一个请求,每次值被修改时就会调用此block,并把修改后的参数传进来
[RACObserve(self, self.navigationTitle) subscribeNext:^(NSString *x) {
[self questWithData];
}];
egOne:当一个titile为标题时发送请求
[[RACObserve(self, self.navigationTitle)
filter:^(NSString* value) {
if ([value hasPrefix:@"标题"]) {
return YES;
} else { return NO;
}
}]
subscribeNext:^(NSString * x) {
[self requestWithData];
}];
egThree:关于textfield的处理
平常我们检测textfield的变化都是这样
[self.accountText addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField {
if (textField == self.textfield ) {
if (self.textfield.length >= 11 ) {
[self requestWithData];
} else {
return NO;
}
}
}
现在我们使用RAC监听textfield的值的变化
// filter:满足了某一条件才往下执行,通过条件才执行subscribeNext 这个block,才执行下一步
[[self.textField.rac_textSignal filter:^(NSString *value) {
if (value.length != 13) {
return NO;
} else { return YES; }
}]
subscribeNext:^(NSString *x) {
[self requestWithData];
}];
egFour:
// 监听多个变量变化,当变量满足条件时,使button为可点击状态
[[RACSignal
combineLatest:@[self.nameText.rac_textSignal,
self.passText.rac_textSignal,