最近在做一個(gè)關(guān)于問卷調(diào)查的功能,遇到了一個(gè)比較棘手的問題,就是我cell中有一個(gè)button點(diǎn)擊button進(jìn)行選擇,然后改變button的顏色,但是cell上啦消失重用,回來之后原來的點(diǎn)擊改變,又恢復(fù)到默認(rèn),這一度讓我很惱火,后來這個(gè)問題終于解決了.于是寫下這個(gè)文章,以此來總結(jié)下,以后可能還會(huì)遇到同樣的問題.
1.圖解說下問題吧
針對(duì)這個(gè)問題,總結(jié)了一下幾點(diǎn):
1.首先,在model里面定義一個(gè)屬性,用來存儲(chǔ)點(diǎn)擊的button的tag值.再定義一個(gè)布爾值,用來判斷button的點(diǎn)擊事件
@property(nonatomic)BOOL ? isSelect;
@property(nonatomic)NSInteger tag;
2.cell中自定義一個(gè)block,用來傳輸你點(diǎn)擊的button的tag值
@property(nonatomic,strong)void(^clickButtonAction)(NSInteger ?tagg);
3.在button的點(diǎn)擊事件中實(shí)現(xiàn)這個(gè)block方法.
4.控制器內(nèi)cell創(chuàng)建進(jìn)行button的tag值和model相關(guān)聯(lián),如下圖:
5.回到cell的set方法里面,也就是model賦值.
在這之前,你要把你創(chuàng)建的button放到一個(gè)數(shù)組里面,并給他們賦予不同的tag值,因?yàn)檫@需要在set方法里面來判斷你點(diǎn)擊了哪一個(gè)button
cell中button的創(chuàng)建,用for語句就可以了
好了,這樣之后你再怎么弄就不會(huì)再消失了,希望有遇到這樣問題的朋友能夠?qū)δ銈冇兴鶐椭?
如果只有一個(gè)button的話,那就只需要一個(gè)布爾值就可以了,點(diǎn)擊cell讓這個(gè)cell給這個(gè)button進(jìn)行賦值就可以了,只需要在set方法里面讓button.selected = model.selected就可以了,也不需要button的點(diǎn)擊事件,然后在控制器里面,讓model.selected = !model.selected.這樣的幾步就可以了.