在storeboard上邊拖個View和一個按鈕
在storeboard上邊拖個View和一個按鈕
關(guān)聯(lián)一下
關(guān)聯(lián)一下
不好拖到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:@"按鈕點擊了诞仓,數(shù)據(jù)來了"];
}
@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);
}];
}
點擊按鈕之后打印結(jié)果:
2017-06-15 18:10:51.386 RAC-demo[42160:6990781] x === 按鈕點擊了计福,數(shù)據(jù)來了
無所不能:
- (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];
}];
}