RACSubject的简单应用
RACSubject :信号提供者!!,自己可以充当信号,又能够发送信号!!
本案例展示:点击某一个按钮就可以进行触发他的事件(即:点击按钮发送消息,在适当的地方订阅到对应的消息)!
案例解说:先在Main.storyboard中搭建一下UI,拖一个UIVIew,Button放置到UIView上面,然后建立Button的方法关联(- (IBAction)btnClick:(id)sender
)并且使用懒加载实例化一个RACSubject信号。然后在ViewController中将LQView建立关联,之后直接订阅信号,从而才能获取到信号消息进行处理。
案例代码
#import "ViewController.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "LQView.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet LQView *LQView;
@property(nonatomic,strong)id<RACSubscriber> subscriber;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//订阅信号
[self.LQView.btnClickSingal subscribeNext:^(id _Nullable x) {
// NSLog(@"%@",x);
self.view.backgroundColor = x;
}];
}
#import <UIKit/UIKit.h>
#import <ReactiveObjC/ReactiveObjC.h>
//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