iOS代理的簡單使用(監(jiān)聽cell內(nèi)部按鈕點擊事件)

自我整理了下有關(guān)代理的知識,說到代理每次都覺得這東西有些麻煩,步驟很多,不過畢竟它很實用,所以還是要好好整理下。

重點:本文實現(xiàn)效果:監(jiān)聽cell內(nèi)部按鈕被點擊后實現(xiàn)某些功能

代碼相關(guān)Demo已上傳至github上 傳送門:jinmingzzx關(guān)于代理的Demo?


使用代理設(shè)計模式,仿照tableView代理 給控制器設(shè)置代理并監(jiān)聽cell內(nèi)部按鈕被點擊后實現(xiàn)某些功能

說道代理離不開以下6步:

//制作步驟

1.寫協(xié)議(協(xié)議方法)

2.定義代理屬性(屬性遵守協(xié)議)

3.調(diào)用協(xié)議中的方法

//使用步驟

4.遵守協(xié)議

5.設(shè)置代理

6.實現(xiàn)協(xié)議中的方法

下面直接上代碼


第一步 寫一個協(xié)議

首先 我們使用xib自定義一個cell cell上加兩個按鈕加號按鈕與減號按鈕 用于監(jiān)聽使用

第一步 如圖 我們在cell的.h文件中 寫協(xié)議 具體內(nèi)容如下:

@protocol? JMCustomCellDelegate<NSObject>

具體方法如上圖

@end

內(nèi)部兩個協(xié)議方法 分別為加號被點擊 減號被點擊時觸發(fā)的方法 這里仿照tableView代理方法書寫,感興趣的同學(xué)可以去tableView Delegate方法中尋找

這里解釋下

@class JMCustomCell; 是因為協(xié)議方法中需要使用 所以聲明

@optional 表示該方法非必須實現(xiàn),如果不寫的話默認為 @required

<NSObject>為基協(xié)議


第二步 定義代理屬性(并遵守協(xié)議)

第二步 定義代理屬性

這里解釋下

代理使用weak修飾

使用id類型是為了解除耦合性 使任何類型的對象都可以成為該cell的代理


第三步 調(diào)用代理方法

第三步 調(diào)用代理方法

在cell.m文件中 我們使用拖線的方法 給出兩個按鈕的點擊方法

這里解釋下:

[self.delegate respondsToSelector:@selector(jmCustomCellMinusBtDidClickWithCustomCell:)]方法是為了判斷方法是否被響應(yīng),這里如果我們在第六部中 沒有實現(xiàn)jmCustomCellMinusBtDidClickWithCustomCell:方法而且又沒有給出以上if判斷,程序會崩潰,報沒有找到該方法的錯誤,該方法是配合第一步@optional使用的,目的就是判斷方法是否被響應(yīng)

核心方法為[self.delegate jmCustomCellMinusBtDidClickWithCustomCell:self];即(調(diào)用代理方法)


使用步驟

第四步 遵守協(xié)議

在rootViewController.m文件中 遵守協(xié)議

第四步 遵守協(xié)議

第五步 設(shè)置代理

第五步 設(shè)置代理

這里我們將viewController設(shè)置為cell的代理


第六步 實現(xiàn)協(xié)議方法

第六步 實現(xiàn)協(xié)議方法

第六步 大功告成

這里解釋下 viewController代理 監(jiān)聽到被點擊的按鈕 并通過協(xié)議獲得了 被點擊的按鈕的cell

這里我們 可以使用tableview的indexPathForCell方法獲取到cell的具體位置即 index

至此我們使用代理模式 監(jiān)聽到cell內(nèi)部的button的點擊事件

以下是demo的使用結(jié)果

當(dāng)點擊?時候

當(dāng)點擊?時

以上代碼已經(jīng)上傳至Gayhub以供大家查看使用https://github.com/jinmingzzx/jmTestDemo? ,歡迎各位同學(xué)給出意見指點,感謝收看!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容