第一种:代替代理
//以UIAlertViewDelegate为例用rac_signalForSelector
//实现- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex代理方法
[[self rac_signalForSelector:@selector(alertView:clickedButtonAtIndex:) fromProtocol:@protocol(UIAlertViewDelegate)] subscribeNext:^(RACTuple * _Nullable tup) {
if(tup){
RACTupleUnpack(UIAlertView *alert,NSNumber *buttonIndex) = tup;
NSInteger seIndex = [buttonIndex integerValue];
NSString *btnTitle = [alert buttonTitleAtIndex:seIndex];
if(alert.tag == 1000){
NSLog(@"btnTitle = %@",btnTitle);
}
}
}
}];
第二种:监听某个对象调用某个方法
// RAC方法:可以判断某个方法有没有调用
// 只要self调用Selector就会产生一个信号
// rac_signalForSelector:监听某个对象调用某个方法
[[self rac_signalForSelector:@selector(loadAdvertisementsData)] subscribeNext:^(id x) {
NSLog(@"控制器调用了loadAdvertisementsData");
}];
// 判断下_btn有没有调用btnClick,有信号就表示点击了按钮
[[_btn rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(id x) {
NSLog(@"点击了按钮");
}];
欢迎大佬儿来指正纠错,共同学习
网友评论