RAC 5行代码搞定登录页面---做个效率猿
2018-01-05 本文已影响0人
代码侯
要快到什么样的程度,才能掌握自己的生命
必须要快到,超越生命的流逝 ----墨鸦
说先说明需求:使用RAC+MVVM架构编写登录页面,输入用户名发送验证码按钮可用,当用户名和密码输入框全部输入完成的时候登录按钮可用.
搭建登录页面,要快
Xib关联代码
创建ViewModel
#import <Foundation/Foundation.h>
#import <ReactiveObjC.h>
@interface LoginViewModel : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *pwd;
@property (nonatomic, copy) NSString *code;
@property (nonatomic, strong) RACSignal *loginSignal;
@property (nonatomic, strong) RACSignal *codeSignal;
@end
#import "LoginViewModel.h"
@implementation LoginViewModel
- (instancetype)init
{
self = [super init];
if (self) {
[self setUp];
}
return self;
}
- (void)setUp{
_codeSignal = [RACSignal combineLatest:@[RACObserve(self, name)] reduce:^id _Nullable{
return @(_name.length);
}];
_loginSignal = [RACSignal combineLatest:@[RACObserve(self, name),RACObserve(self, pwd),RACObserve(self, code)] reduce:^id _Nullable{
return @(_name.length && _pwd.length && _code.length);
}];
}
@end
在ViewController的ViewDidload方法中进行监听
RAC(self.model,name) = _nameField.rac_textSignal;
RAC(_model,pwd) = _pwdField.rac_textSignal;
RAC(_model,code) = _codeField.rac_textSignal;
RAC(_codeBtn,enabled) = _model.codeSignal;
RAC(_loginBtn,enabled) = _model.loginSignal;
OK,不多不少正好5行!是不是感觉世界都清澈了!