iOS開發(fā)之旅--ReactiveCocoa使用小結(jié)2
??????Go on!
??????先祝福孩子兒童節(jié)快樂!
未看第一篇博客的可以先看第一篇:ReactiveCocoa使用小結(jié),歡迎交流
今天簡(jiǎn)單介紹RAC中**rac_signalForSelector 枪狂、 rac_signalForControlEvents **的使用囤捻,
首先是delegate
delegate分為庫(kù)定義和自己定義的媒熊。本文中主要講解庫(kù)定義的delegate的使用細(xì)節(jié)及技巧样傍。
本文用常用的tableview做的例子角塑,源碼:TP
使用細(xì)節(jié):只能用于無返回值的函數(shù),具有返回值的函數(shù)不適合此方法,如果你真的想把所有的delegate使用block寫法主穗,那么推薦你使用這個(gè)三方庫(kù):Aspects,
我們綁定信號(hào)應(yīng)該在設(shè)置delegate的前面,具體可以看代碼毙芜,可供測(cè)試忽媒。
我們可以通過這種寫法重新封裝一個(gè)常用控件的分類來使用,
其次是按鈕點(diǎn)擊事件的綁定監(jiān)聽
已有按鈕點(diǎn)擊事件可以通過下面的方法實(shí)現(xiàn)
[[self.btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"按鈕點(diǎn)擊事件委托交給rac處理"];
}];
自定義按鈕的點(diǎn)擊事件腋粥,我們平時(shí)的方法是:
[myButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
//現(xiàn)在可以這樣
[[myButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"測(cè)試自己創(chuàng)建按鈕點(diǎn)擊事件"];
}];
可以方便很多晦雨,點(diǎn)擊事件的代碼不需要去另一個(gè)地方找,直接就可以看到隘冲。
然后用來監(jiān)聽方法有沒有執(zhí)行的一個(gè)很好的辦法
具體常用如下:
- (void)viewDidLoad {
[[self rac_signalForSelector:@selector(goodBoy)] subscribeNext:^(id x) {
NSLog(@"****goodBoy*****");
}];
//這個(gè)都需要放在監(jiān)聽后面闹瞧,不然你都執(zhí)行完了,才設(shè)置監(jiān)聽豈不是浪費(fèi)了
最后是對(duì)通知的重寫
話不多說展辞,直接看代碼奥邮。
//我們平時(shí)的代碼,先添加通知罗珍,然后下面需要再實(shí)現(xiàn)一個(gè)方法洽腺,這里只需要這樣。
//??監(jiān)聽通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"xiaoshiceshi" object:nil] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"上面點(diǎn)擊事件給我發(fā)來通知"];
}];