在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];
}];
}