iOS -- 通過runtime向Button的點(diǎn)擊方法里傳遞參數(shù)實(shí)現(xiàn)單選效果

效果:

有三個(gè)button點(diǎn)擊其中一個(gè)將其他兩個(gè)的選中狀態(tài)取消,相當(dāng)于單選的效果:

實(shí)現(xiàn)效果

由于三個(gè)不同是同一類型的按鈕,如果點(diǎn)擊三個(gè)按鈕都調(diào)用一個(gè)方法將會(huì)避免我們的代碼重復(fù),提高工作效率。那么要實(shí)現(xiàn)這樣的代碼效果我們就必須在點(diǎn)擊方法里邊將另外兩個(gè)button的狀態(tài)改變,并且點(diǎn)擊的button不確定,其他的button也是不能確定的,這就需要我們在點(diǎn)擊button調(diào)用點(diǎn)擊方法的時(shí)候?qū)⒘硗鈨蓚€(gè)button作為參數(shù)傳到點(diǎn)擊方法中去,

實(shí)現(xiàn)方法:

現(xiàn)在來分享一種傳遞的方法:

首先引入頭文件#import<objc/runtime.h> 運(yùn)用以下兩個(gè)方法存取對象


1、設(shè)置關(guān)聯(lián)對象:此方法第一個(gè)參數(shù)是指定的對象,第二個(gè)參數(shù)是關(guān)聯(lián)的標(biāo)識,第三個(gè)參數(shù)是要和指定對象關(guān)聯(lián)的對象,第四個(gè)參數(shù)是關(guān)聯(lián)方式(枚舉值);

objc_setAssociatedObject(<#id object#>, <#const void*key#>, <#id value#>, <#objc_AssociationPolicy

policy#>)???

2、取出關(guān)聯(lián)對象:返回關(guān)聯(lián)的對象,第一個(gè)參數(shù)是指定對象,第二個(gè)參數(shù)是關(guān)聯(lián)標(biāo)識。

objc_getAssociatedObject(<#id object#>, <#const void *key#>)??



代碼示例:初始化三個(gè)button并且關(guān)聯(lián)其他兩個(gè)button

初始化

實(shí)現(xiàn)點(diǎn)擊方法:點(diǎn)擊button將點(diǎn)擊按鈕之后應(yīng)該有的狀態(tài)通過block傳遞到自定義的button的初始化方法包含的代碼塊中對按鈕做出相應(yīng)操作。

三個(gè)按鈕共同調(diào)用的點(diǎn)擊方法

自定義的button代碼:在init方法里實(shí)現(xiàn)block代碼塊通過控制器傳遞過來的參數(shù)做出相應(yīng)的處理。

SelectButton.h文件
SelectButton.m文件


關(guān)聯(lián)兩個(gè)button是這樣,依次類推可以關(guān)聯(lián)多個(gè)對象,以實(shí)現(xiàn)單選效果。

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

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

  • 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,893評論 33 466
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評論 25 708
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,077評論 0 9
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,363評論 0 17
  • 1、感賞老公理解我的病痛,承擔(dān)家務(wù),他是一個(gè)不善表達(dá)的人,但是能感受到他的貼心,心情舒暢。 2、感賞暢兒吸取上周做...
    后來來了閱讀 222評論 1 2

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