ReactiveCocoa用法示例 一

2021-08-10 18:52:09 字數 1767 閱讀 9778

// uitableview+raccommandsupport.m 檔案中**

- (void)setrac_refreshcommand:(raccommand *)command ];

}

這裡的分類主要就是給tableview增加mjrefresh,並且將傳入command引數傳入mjrefresh執行的block中

* viewmodel中定義重新整理和載入更多的事件

檔案中**

nsarray *array = @[

@,@,

@,@,

@,@,

@,];

nsmutablearray *modelarray = [nsmutablearray array];

[array enumerateobjectsusingblock:^(id _nonnull obj, nsuinteger idx, bool * _nonnull stop) ];

@weakify(self);

self

.refreashcmd = [[raccommand alloc] initwithsignalblock:^racsignal *(id input) ];

}];self

.loadmorecmd = [[raccommand alloc] initwithsignalblock:^racsignal *(id input) ];

}];

這裡定義兩個command,將資料報在signal中,再包在command中

* 控制器中將viewmode的command事件和uitableview繫結

控制器中的繫結就非常簡單,這樣繫結之後,tableview的重新整理事件就會進入viewmodel的command的block中

// viewcontroller.m 檔案中** command繫結

self.tableview

.rac_refreshcommand = self.viewmodel

.refreashcmd

; self.tableview

.rac_dropcommand = self.viewmodel

.loadmorecmd

;

檔案中**

racsignal *refreshendsignal = [[self.refreashcmd executionsignals] switchtolatest];

racsignal *loadmoreendsignal = [[self.loadmorecmd executionsignals] switchtolatest];

// 上拉和下拉兩個訊號統一輸出

self.reloadtableviewsignal = [racsignal merge:@[refreshendsignal, loadmoreendsignal]];

// viewcontroller.m 檔案中**

[self rac_liftselector:@selector(reloadtableview:) withsignals:self.viewmodel

.reloadtableviewsignal, nil];

/** 重新整理列表 */

- (void)reloadtableview:(id)obj

ReactiveCocoa開發中常見用法

7.1 代替 rac signalforselector 用於替代 self rac signalforselector selector userdidscroll tophotoatindex fromprotocol protocol frpfullsizephotoviewcontrolle...

ReactiveCocoa常見巨集

1 rac target,keypath,nil value 用於給某個物件的某個屬性繫結。只要文字框文字改變,就會修改label的文字 rac self.labelview,text textfield.rac textsignal reactivecocoa bindings rac self,...

ReactiveCocoa個人記錄

self.mybutton rac signalforcontrolevents uicontroleventtouchupinside subscribenext id x 複製 self.mytextfield rac textsignal subscribenext id x distinct...