2-5 RACSubject的简单应用

RACSubject的简单应用

RACSubject :信号提供者!!,自己可以充当信号,又能够发送信号!!

本案例展示:点击某一个按钮就可以进行触发他的事件(即:点击按钮发送消息,在适当的地方订阅到对应的消息)!

案例解说:先在Main.storyboard中搭建一下UI,拖一个UIVIew,Button放置到UIView上面,然后建立Button的方法关联(- (IBAction)btnClick:(id)sender )并且使用懒加载实例化一个RACSubject信号。然后在ViewController中将LQView建立关联,之后直接订阅信号,从而才能获取到信号消息进行处理。

案例代码

#import "ViewController.h"
#import 
#import "LQView.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet LQView *LQView;
@property(nonatomic,strong)id subscriber;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //订阅信号
    [self.LQView.btnClickSingal subscribeNext:^(id  _Nullable x) {
//        NSLog(@"%@",x);
        self.view.backgroundColor = x;
    }];
    
}
#import 
#import 
//typedef void <#name#>
@interface LQView : UIView
//@property (nonatomic,strong)void(^blickBlock)();使用block的方式实现

@property (nonatomic,strong)RACSubject *btnClickSingal;


@end
#import "LQView.h"

@implementation LQView
-(RACSubject *)btnClickSingal{
    if (!_btnClickSingal) {
        _btnClickSingal = [RACSubject subject];
    }
    return _btnClickSingal;
}
- (IBAction)btnClick:(id)sender {
      [self.btnClickSingal sendNext:self.backgroundColor];
}
@end

Main.storyboard配置图片

Main.storyboard中的配置,button和方法关联要是实心点不能是空心点

storyboard中的配置,button和方法关联要是实心点不能是空心点.png

应用效果图

按钮点击前效果


点击按钮前的效果.png

按钮点击后效果

点击按钮后事件处理的效果.png

你可能感兴趣的:(2-5 RACSubject的简单应用)