iOS

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行!是不是感觉世界都清澈了!

上一篇 下一篇

猜你喜欢

热点阅读