关闭

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

标签: ios开发delegateRAC云工作
477人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:223518次
    • 积分:2927
    • 等级:
    • 排名:第12612名
    • 原创:108篇
    • 转载:19篇
    • 译文:0篇
    • 评论:53条