iOS开发之旅--ReactiveCocoa使用小结2

来源:互联网 发布:2015淘宝销量排名 编辑:程序博客网 时间:2024/05/29 18:40

iOS开发之旅–ReactiveCocoa使用小结2

      Go on!

      先祝福孩子儿童节快乐!


未看第一篇博客的可以先看第一篇:ReactiveCocoa使用小结,欢迎交流

今天简单介绍RAC中rac_signalForSelector 、 rac_signalForControlEvents 的使用,

首先是delegate

delegate分为库定义和自己定义的。本文中主要讲解库定义的delegate的使用细节及技巧。

本文用常用的tableview做的例子,源码:TP

使用细节:只能用于无返回值的函数,具有返回值的函数不适合此方法,如果你真的想把所有的delegate使用block写法,那么推荐你使用这个三方库:Aspects,
我们绑定信号应该在设置delegate的前面,具体可以看代码,可供测试。

我们可以通过这种写法重新封装一个常用控件的分类来使用,

其次是按钮点击事件的绑定监听

已有按钮点击事件可以通过下面的方法实现

[[self.btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {        [[ShowPromptMessage sharedManager] showPromptMessage:@"按钮点击事件委托交给rac处理"];    }];

自定义按钮的点击事件,我们平时的方法是:

[myButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];//现在可以这样[[myButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {        [[ShowPromptMessage sharedManager] showPromptMessage:@"测试自己创建按钮点击事件"];    }];

可以方便很多,点击事件的代码不需要去另一个地方找,直接就可以看到。

然后用来监听方法有没有执行的一个很好的办法

具体常用如下:

- (void)viewDidLoad {    [[self rac_signalForSelector:@selector(goodBoy)] subscribeNext:^(id x) {        NSLog(@"****goodBoy*****");    }];    //这个都需要放在监听后面,不然你都执行完了,才设置监听岂不是浪费了
最后是对通知的重写

话不多说,直接看代码。

//我们平时的代码,先添加通知,然后下面需要再实现一个方法,这里只需要这样。//��监听通知    [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"xiaoshiceshi" object:nil] subscribeNext:^(id x) {         [[ShowPromptMessage sharedManager] showPromptMessage:@"上面点击事件给我发来通知"];    }];
0 0