iOS RAC的应用场景之一

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

iOS RAC的应用场景之一_第1张图片
在storeboard上边拖个View和一个按钮

关联一下

iOS RAC的应用场景之一_第2张图片
关联一下

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

- (IBAction)btnClick:(id)sender
iOS RAC的应用场景之一_第3张图片
XDView.h
#import 
#import 
@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 
#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;
    }];

    
    
    
}

点击按钮之后:

iOS RAC的应用场景之一_第4张图片
效果

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

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

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

你可能感兴趣的:(iOS RAC的应用场景之一)