美文网首页
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