只要最实用的,不用刨根问底
先说使用ReactiveCocoa对UITextFiled的基本用法。咱下一篇讲讲对UIButton的用法
网上关于这个ReactiveCocoa有好多Blog,有多灵活有多好用。似乎都没有完全的让我们去使用的文章。今天就带大家看看怎么使用。这个ReactiveCocoa对于业界推崇无限高大上的第三方的框架。包括美团,蘑菇街等等app的开发负责人都对他赞不决口。都说大型app都适合用他来做开发。可以基于他的MVVM思想,和信号源的开发。看着外界对他说的神乎其神的,其实也不比羡慕。给我一块学习,
其实看这里也就够用了。
NOTICE:一定要在你的Podfile的文件里要这样写
- use_frameworks!
- pod 'ReactiveCocoa', '~> 4.2.1'
[use_frameworks!]一定要写上!!!
- [self.userNameFiled.rac_textSignal subscribeNext:^(id x) {
- NSLog(@"----%@",x);
- }];
1.1 监听UITextFiled输入的字符串的长度开始Action
- /**监听输入N个字符以后的动作*/
- [[self.userNameFiled.rac_textSignal filter:^BOOL(NSString * value) {
- return value.length > 6;
- }] subscribeNext:^(NSString * value) {
- NSLog(@"----%@",value);
- }];
-
- // 这样写不好啊
- [[self.userNameFiled.rac_textSignal map:^id(NSString * value) {
- return value.length > 6 ? value : @"";
- }] subscribeNext:^(NSString * value) {
- NSLog(@"----%@",value);
- }];
- RACSignal * updateTextSignal = [self.userNameFiled.rac_textSignal map:^id(NSString * value) {
- NSLog(@"----length%ld",value.length);
- return (value.length <= 3)? @(NO):@(YES);
- }];
- RAC(self.submitButton,enabled) = updateTextSignal;
- // 也可以这样写
- [updateTextSignal subscribeNext:^(NSNumber * value) {
- self.submitButton.enabled = [value boolValue];
- }];
- RACSignal * updateTextSignal = [self.userNameFiled.rac_textSignal map:^id(NSString * value) {
- NSLog(@"----length%ld",value.length);
- return (value.length <= 3)? [UIColor clearColor]:[UIColor redColor];
- }];
- RAC(self.userNameFiled,backgroundColor) = updateTextSignal;
- /**还可以这样写*/
- [updateTextSignal subscribeNext:^(id x) {
- self.userNameFiled.backgroundColor = x;
- }];
4:监听多个信号源,控制登陆的UIButton的enabled属性
将多个信号合并起来,并且拿到各个信号的最新的值,必须每个合并的signal至少都有过一次sendNext,才会触发合并的信号
- /**监听多个输入文本框,同时控制控件属性*/
- RACSignal * fallInSignal = [RACSignal combineLatest:@[
- self.userNameFiled.rac_textSignal,
- self.userPwdFiled.rac_textSignal
- ] reduce:^(NSString * userName,NSString * pwd) {
- return @(userName.length > 0 && pwd.length > 0);
- }];
-
- RAC(self.submitButton,enabled) = fallInSignal;
总结:
大家注意在每一个UITextfile的都有一个方法rac_textSignal。利用延展,创建了对UITextfiled的信号。在上面的演示方法中,我们看了有几个函数。
-
- 1: fileter
- 2: map
- 3: subscribeNext
- 4: RAC(宏)
- 5:combineLatest
- 6:reduce
[map]
-
- 监听文本框的内容改变,把结构重新映射成一个新值.
- 使用步骤:
- 1.传入一个block,类型是返回对象,参数是value
- 2.value就是源信号的内容,直接拿到源信号的内容做处理
- 3.把处理好的内容,直接返回就好了,不用包装成信号,返回的值,就是映射的值。
[combineLatest]
将多个信号合并起来,并且拿到各个信号的最新的值,必须每个合并的signal至少都有过一次sendNext,才会触发合并的信号。
[reduce]
用于信号发出的内容是元组,把信号发出元组的值聚合成一个值
[filter]
过滤信号,使用它可以获取满足条件的信号.
如有问题可添加我的QQ:1290925041
还可添加QQ群:234812704(洲洲哥学院)
欢迎各位一块学习,提高逼格!
更多信iOS开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:
