美文网首页
iOS RAC的应用场景之一

iOS RAC的应用场景之一

作者: Onlyoner | 来源:发表于2017-06-15 18:28 被阅读0次

在storeboard上边拖个View和一个按钮

在storeboard上边拖个View和一个按钮

关联一下

关联一下

不好拖到XDView的话先手敲代码,反拖过去:

- (IBAction)btnClick:(id)sender
XDView.h
#import <UIKit/UIKit.h>
#import <ReactiveObjC/ReactiveObjC.h>
@interface XDView : UIView
/** RACSubject */
@property (nonatomic,strong) RACSubject *btnClickSignal;

@end
XDView.m
#import "XDView.h"

@implementation XDView

-(RACSubject *)btnClickSignal{

    if (_btnClickSignal == nil) {
        _btnClickSignal = [RACSubject subject];
    }
    return _btnClickSignal;
}
- (IBAction)btnClick:(id)sender{


   [self.btnClickSignal sendNext:@"按钮点击了,数据来了"];
    
  
}

@end
#import "ViewController.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "XDView.h"
@interface ViewController ()
@property (strong, nonatomic) IBOutlet XDView *XD_View;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //订阅信号
    [self.XD_View.btnClickSignal subscribeNext:^(id  _Nullable x) {
        //想做什么
        NSLog(@"x === %@",x);

    }];
    
}

点击按钮之后打印结果:

2017-06-15 18:10:51.386 RAC-demo[42160:6990781] x === 按钮点击了,数据来了

无所不能:

- (IBAction)btnClick:(id)sender{


     [self.btnClickSignal sendNext:self.backgroundColor];
    
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //订阅信号
    [self.XD_View.btnClickSignal subscribeNext:^(id  _Nullable x) {
        //想做什么
        NSLog(@"x === %@",x);
        self.view.backgroundColor = x;
    }];

    
    
    
}

点击按钮之后:

效果

id 什么都可以代替想怎么玩怎么玩

- (void)sendNext:(id)value {
    [self enumerateSubscribersUsingBlock:^(id<RACSubscriber> subscriber) {
        [subscriber sendNext:value];
    }];
}

value可以是任何:值,方法,代码块等等,例如放个:网络请求。

相关文章

网友评论

      本文标题:iOS RAC的应用场景之一

      本文链接:https://www.haomeiwen.com/subject/mdeuqxtx.html