在storeboard上边拖个View和一个按钮
![](https://img.haomeiwen.com/i3729815/c2229f263957e503.png)
关联一下
![](https://img.haomeiwen.com/i3729815/6f4bd54dddd04bae.png)
不好拖到XDView的话先手敲代码,反拖过去:
- (IBAction)btnClick:(id)sender
![](https://img.haomeiwen.com/i3729815/fd270d2021a8215b.png)
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;
}];
}
点击按钮之后:
![](https://img.haomeiwen.com/i3729815/716f8b9df05b7fb7.png)
id 什么都可以代替想怎么玩怎么玩
- (void)sendNext:(id)value {
[self enumerateSubscribersUsingBlock:^(id<RACSubscriber> subscriber) {
[subscriber sendNext:value];
}];
}
网友评论