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

由于三個(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)操作。

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


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