iOS TableView的單元格實(shí)現(xiàn)單選功能

我最近在做的一個(gè)項(xiàng)目中遇到了單元格單選的功能廓译,當(dāng)時(shí)我的第一想法是在單元格上添加按鈕,通過(guò)點(diǎn)擊改變按鈕的背景圖片并記錄最后一次點(diǎn)擊的indexPath,因?yàn)橹暗捻?xiàng)目中遇到過(guò)多選的功能,用這種方法出現(xiàn)了復(fù)用的問(wèn)題,也就是選擇某個(gè)單元格滑動(dòng)表格時(shí)沒(méi)點(diǎn)擊的單元格也被選中了作儿,所以當(dāng)時(shí)就很擔(dān)心單選的時(shí)候出現(xiàn)同樣的問(wèn)題,果不其然馋劈,只顯示最后一個(gè)單元格被選中攻锰。然后我找到了這種方法,總結(jié)了一下

這個(gè)功能的實(shí)現(xiàn)只需要在兩個(gè)方法中code即可

首選我們公開(kāi)一個(gè)屬性

@property(nonatomic,strong)NSIndexPath *lastPath;

主要是用來(lái)接收用戶上一次所選的cell的indexpath

第一步:在cellForRowAtIndexPath:方法中實(shí)現(xiàn)如下代碼

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

NSInteger row = [indexPath row];

NSInteger oldRow = [lastPath row];

if (row == oldRow && lastPath!=nil) {

//這個(gè)是系統(tǒng)中對(duì)勾的那種選擇框

cell.accessoryType = UITableViewCellAccessoryCheckmark;

}else{

cell.accessoryType = UITableViewCellAccessoryNone;

}

}

第二步:在didSelectRowAtIndexPath:中實(shí)現(xiàn)如下代碼

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

//這里最好不要聲明int類型的妓雾,個(gè)人建議

NSInteger newRow = [indexPath row];

NSInteger oldRow = (self .lastPath !=nil)?[self .lastPath row]:-1;

if (newRow != oldRow) {

UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];

newCell.accessoryType = UITableViewCellAccessoryCheckmark;

UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastPath];

oldCell.accessoryType = UITableViewCellAccessoryNone;

self .lastPath = indexPath;

}

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

Ok,可以收工了娶吞,這樣實(shí)現(xiàn)之后的效果是每次單擊一個(gè)cell會(huì)做一個(gè)選中的標(biāo)志并且托動(dòng)表視圖時(shí)也不會(huì)出現(xiàn)checkmark的復(fù)用

不過(guò),根據(jù)項(xiàng)目需求械姻,可能會(huì)需要定義一個(gè)按鈕妒蛇,自定義選擇框的圖片,這也很簡(jiǎn)單楷拳,只需要將上面的代碼改一下就ok了:

在cellForRowAtIndexPath:中如下修改

if (row == oldRow && self.lastPath!=nil) {

[cell . selectBtn setBackgroundImage:[UIImage imageNamed:@"選中圖標(biāo)"] forState:UIControlStateNormal];

}else{

[cell . selectBtn setBackgroundImage:[UIImage imageNamed:@"未選中圖標(biāo)"] forState:UIControlStateNormal];

}

在didSelectRowAtIndexPath:中如下修改

if (newRow != oldRow) {

self.cell = [tableView cellForRowAtIndexPath:indexPath];

[self .cell.selectBtn setBackgroundImage:[UIImage imageNamed:@"選中圖標(biāo)"] forState:UIControlStateNormal];

self.cell = [tableView cellForRowAtIndexPath:self .lastPath];

[self .cell.selectBtn setBackgroundImage:[UIImage imageNamed:@"未選中圖標(biāo)"] forState:UIControlStateNormal];

self .lastPath = indexPath;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绣夺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子欢揖,更是在濱河造成了極大的恐慌陶耍,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件她混,死亡現(xiàn)場(chǎng)離奇詭異烈钞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)坤按,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)棵磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晋涣,你說(shuō)我怎么就攤上這事〕磷溃” “怎么了谢鹊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵算吩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我佃扼,道長(zhǎng)偎巢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任兼耀,我火速辦了婚禮压昼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘤运。我一直安慰自己窍霞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布拯坟。 她就那樣靜靜地躺著但金,像睡著了一般。 火紅的嫁衣襯著肌膚如雪郁季。 梳的紋絲不亂的頭發(fā)上冷溃,一...
    開(kāi)封第一講書(shū)人閱讀 49,802評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音梦裂,去河邊找鬼似枕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛年柠,可吹牛的內(nèi)容都是我干的凿歼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彪杉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼毅往!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起派近,我...
    開(kāi)封第一講書(shū)人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤攀唯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后渴丸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體侯嘀,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年谱轨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戒幔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡土童,死狀恐怖诗茎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情献汗,我是刑警寧澤敢订,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布王污,位于F島的核電站,受9級(jí)特大地震影響楚午,放射性物質(zhì)發(fā)生泄漏昭齐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一矾柜、第九天 我趴在偏房一處隱蔽的房頂上張望阱驾。 院中可真熱鬧,春花似錦怪蔑、人聲如沸里覆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)租谈。三九已至,卻和暖如春捆愁,著一層夾襖步出監(jiān)牢的瞬間割去,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工昼丑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呻逆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓菩帝,卻偏偏與公主長(zhǎng)得像咖城,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呼奢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容