W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在上一節(jié)的內(nèi)容中,我們綁定UIButton的enabled屬性并不是最佳實(shí)踐,因?yàn)閁IButton增加了一個(gè)ReactiveCocoa的類和一條指令。在這一節(jié)中我們來介紹ReactiveCocoa的指令。使用button的rac_command可以為我們監(jiān)控enabled屬性。 應(yīng)用一段ReactiveCocoa的文檔:
指令,RACCommand類的代表,創(chuàng)建并訂閱動(dòng)作的信號(hào)響應(yīng),可以很容易地實(shí)現(xiàn)一些用戶與應(yīng)用交互時(shí)的邊界效果。
指令(行為觸發(fā)的)通常是UI驅(qū)動(dòng)的,比如按鍵的點(diǎn)擊。指令也可以通過信號(hào)自動(dòng)禁用,這種禁用狀態(tài)呈現(xiàn)在UI上就是禁用與該指令相關(guān)聯(lián)的任何操作。
當(dāng)你想要一次用戶交互發(fā)送一個(gè)信號(hào)來響應(yīng)的時(shí)候指令就很有用。指令信號(hào)對(duì)訂閱了指令的這個(gè)信號(hào)而言,她之后的輸出都被指令信號(hào)所處理。這有一點(diǎn)點(diǎn)混亂,在第五章我們會(huì)看到一些指令相關(guān)的實(shí)踐。
現(xiàn)在我們用下面的代碼來替代之前的在button上綁定enabled屬性的代碼
self.button.rac_command = [[RACCommand alloc] initWithEnabled:validEmailSignal
signalBlock:^RACSignal *(id input){
NSLog(@"Button was pressed.");
return [RACSignal empty];
}];
任何時(shí)候button被點(diǎn)擊就會(huì)執(zhí)行signalBlock,rac_command屬性會(huì)監(jiān)控使能信號(hào)validEmailSignal和button的enabled屬性。(實(shí)際上,如果我們保留原來的代碼,新加這一段會(huì)引起重復(fù)綁定一個(gè)屬性的錯(cuò)誤)。
另外,這里返回的[RACSignal empty]是什么東西?這里我們需要返回一個(gè)信號(hào)讓屬于RACCommand的executionSignal
管道(pipe)下發(fā)出去。這個(gè)信號(hào)代表button按下時(shí)一些任務(wù)需要被處理。在這個(gè)處理信號(hào)沒有返回一個(gè)'complete value'('empty '會(huì)立即返回一個(gè)'complete value')之前button將會(huì)保持不可用狀態(tài)。因?yàn)檫@個(gè)例子中我們只是打印了一下,所以這里我們只返回一個(gè)empty信號(hào)。在第五章我們將繼續(xù)討論RACCommand及其用途。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: