美文网首页MVVM+RAC
RACSubject替换代理

RACSubject替换代理

作者: 小胖子2号 | 来源:发表于2016-12-04 17:52 被阅读104次

需求:
1.给当前控制器添加一个按钮,modal到另一个控制器界面
2.另一个控制器view中有个按钮,点击按钮,通知当前控制器

222.png

步骤一:在第二个控制器.h,添加一个RACSubject代替代理。

@interface TwoViewController : UIViewController

@property (nonatomic, strong) RACSubject *delegateSignal;
@end

步骤二:监听第二个控制器按钮点击

@implementation TwoViewController
- (IBAction)notice:(id)sender {
    // 通知第一个控制器,告诉它,按钮被点了

     // 通知代理
     // 判断代理信号是否有值
    if (self.delegateSignal) {
        // 有值,才需要通知
        [self.delegateSignal sendNext:nil];
    }
}
@end

步骤三:在第一个控制器中,监听跳转按钮,给第二个控制器的代理信号赋值,并且监听.

@implementation OneViewController
- (IBAction)btnClick:(id)sender {

    // 创建第二个控制器
    TwoViewController *twoVc = [[TwoViewController alloc] init];

    // 设置代理信号
    twoVc.delegateSignal = [RACSubject subject];

    // 订阅代理信号
    [twoVc.delegateSignal subscribeNext:^(id x) {

        NSLog(@"点击了通知按钮");
    }];

    // 跳转到第二个控制器
    [self presentViewController:twoVc animated:YES completion:nil];

}
@end

代替代理:其实有2种方法

第一种就是上面用RACSubject
第二种就是rac_signalForSelector:监听某对象有没有调用某方法
这两种方法的区别:只要传值,就必须使用RACSubject

下面是第二种方法的用法

- (void)delegate
{
      [[_redView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(id x) {
        NSLog(@"控制器知道按钮被点击");
    }];
    
    // RAC:
    // 把控制器调用didReceiveMemoryWarning转换成信号
    // rac_signalForSelector:监听某对象有没有调用某方法
    // [[self rac_signalForSelector:@selector(didReceiveMemoryWarning)] subscribeNext:^(id x) {
    //        NSLog(@"控制器调用didReceiveMemoryWarning");
    //    }];
}

相关文章

  • RACSubject替换代理

    需求:1.给当前控制器添加一个按钮,modal到另一个控制器界面2.另一个控制器view中有个按钮,点击按钮,通知...

  • ReactiveCocoa方法总结

    基础部分 1、RACSubject当做代理使用 步骤一:在第二个控制器.h,添加一个RACSubject代替代理。...

  • RAC学习之三

    RACSubject介绍:RACSubject在使用中完全可以代替代理和通知,缺点是只能传参不能有返回值。 创建信...

  • ReactiveCocoa常用方法总结

    1、RACSignal使用: 2、RACSubject当做代理使用 3、RACSequence和RACTuple结...

  • RAC(ReactiveCocoa----ReactiveObj

    文章内容: 代理简单使用基于UIKitFoundation (Foundation对象)RACSubject冷信号...

  • RACSubject代替代理

    以前我们写代码利用代理总要写一大坨代码,加上各种判断,怎一个恶心了得,有了RAC的信号机制,我们只需要订阅信号和发...

  • rac开发中的使用场景

    代替代理: 1.RACSubject好处是可以传参 2.rac_signalForSelector好处是使用简单,...

  • RAC_2.RACSubject

    2. RACSubject 使用场景:通常用来代替代理,有了它,就不必要定义代理了。 示例代码: 实际应用 JJV...

  • RAC的简单使用(常用方法)

    RACSignal 可以将RACSignal创建的对象传递至其他地方接收消息 RACSubject 可以代替代理和...

  • RAC学习笔记(二)

    热信号RACSubject RACSubject是RACSignal的子类,RACSubject实现了RACSub...

网友评论

    本文标题:RACSubject替换代理

    本文链接:https://www.haomeiwen.com/subject/ekbhmttx.html