ReactiveCocoa常见用法练习
来源:互联网 发布:域名ip地址 编辑:程序博客网 时间:2024/06/05 01:02
#pragma mark - RAC Text3- (void)RACText3 { /******************************************************************************** 1⃣️.rac_signalForSelector(替换代理,监听点击事件) rac_signalForSelector用于监听某个对象调用某个方法,只要对象调用方法就会产生一个信号; ********************************************************************************/ [_turnBtn addTarget:self action:@selector(turnAction:) forControlEvents:UIControlEventTouchUpInside]; RACSignal *signal = [self rac_signalForSelector:@selector(turnAction:)]; [signal subscribeNext:^(id _Nullable x) { NSLog(@"调用了跳转"); }]; /******************************************************************************** 2⃣️.代替KVO rac_valuesAndChangesForKeyPath用于监听某个对象的属性改变 ********************************************************************************/ // 监听按钮的选择状态属性 [_turnBtn rac_observeKeyPath:@"selected" options:NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) { // 只要监听的属性一改变调用 NSLog(@"------状态改变"); }]; /******************************************************************************** 3⃣️.rac_signalForControlEvents监听事件 ********************************************************************************/ // 按钮产生一个事件,就会产生一个信号 [[_btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { NSLog(@"按钮被点击"); }]; _btn.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) { NSLog(@"点击按钮"); return [RACSignal empty]; }]; /******************************************************************************** 4⃣️.rac_addObserverForName代替接收通知 ********************************************************************************/ RACSignal *signal2 = [[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil]; [signal2 subscribeNext:^(id _Nullable x) { NSLog(@"键盘即将出现"); }]; /******************************************************************************** 5⃣️.rac_textSignal监听文本框文字变化 只要文本框发生改变就会发出信号 ********************************************************************************/ [_textFiled.rac_textSignal subscribeNext:^(NSString * _Nullable x) { // textFiled中输入的文字 NSLog(@"%@",x); }]; /******************************************************************************** 6⃣️.处理页面有多个请求时,需要全部获取到数据,才能展示界面 ********************************************************************************/ RACSignal *requestSignal1 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { // 第一个网络请求 NSLog(@"在这里进行第1个网络请求"); // 请求到数据之后发送出去 [subscriber sendNext:@"数据1"]; return nil; }]; RACSignal *requestSignal2 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { // 第二个网络请求 NSLog(@"在这里进行第2个网络请求"); // 请求到数据之后发送出去 [subscriber sendNext:@"数据2"]; return nil; }]; /* 只有当两个网络请求都完成之后才会调用selector @selector注意点: 参数根据信号数组元素决定 调用的方法的参数类型与信号组发出的数据的类型要一致,即data1->requestSignal1,data2->requestSignal2 */ [self rac_liftSelector:@selector(reciveDataWithData1:data2:) withSignalsFromArray:@[requestSignal1,requestSignal2]];}- (void)reciveDataWithData1:(NSString *)data1 data2:(NSString *)data2 { NSLog(@"%@-%@",data1,data2);}- (void)turnAction:(UIButton *)btn { btn.selected = !btn.selected; NSLog(@"跳转");}
阅读全文
0 0
- ReactiveCocoa常见用法练习
- ReactiveCocoa之常见用法(二)
- ReactiveCocoa之常见用法(二)
- ReactiveCocoa的常见用法和常用宏
- ReactiveCocoa常用类练习
- iOS-ReactiveCocoa常见宏
- ReactiveCocoa 基本用法
- ReactiveCocoa 基本用法
- ReactiveCocoa的简单用法
- ReactiveCocoa用法示例(一)
- ReactiveCocoa用法示例(二)
- ReactiveCocoa常用集合类练习
- ReactiveCocoa之RACSubject用法(四)
- ReactiveCocoa之RACSubject用法(四)
- ReactiveCocoa(3)高级用法
- ReactiveCocoa基础和一些常见类介绍
- ReactiveCocoa基础和一些常见类介绍
- ReactiveCocoa
- MyBatis中的#和$区别
- Centos6.5之ssh免密码登录配置
- PHP代码审计-常见危险函数
- 做百度地图的时候碰到这个错误提示Cannot read property 'Ve' of undefined
- JVM 划重点 之一虚拟机内存模型
- ReactiveCocoa常见用法练习
- E
- vi使用时的注意事项
- SpringMVC jackson maven依赖
- Xbanner的简单使用
- java网络编程--UDP程序设计
- 【go语言 slice】迭代slice
- [EasyPoi] 基础功能,注解使用
- Dictionary