題記:
最近公司的項目開始改版了,也新來了一個項目經(jīng)理,項目確實比以前好看多了,要求也更苛刻了捧弃,讓我們修改tableviewCell點擊后的背景顏色,試了好久終于找到了解決的方法擦囊,在這里和大家分享一下违霞!
初次嘗試
首先肯定去頭文件里看看有什么屬性我們覺得像的,拿來試一試再說(不管是這個問題瞬场,以后碰到類似的問題都可以這樣去試試葛家,屢試不爽!)泌类,蘋果只給我們一個設置cell的背景視圖,沒有給我們一個設置背景顏色的屬性,我嘗試的設置一個背景視圖刃榨,并給這個背景視圖設置顏色弹砚,代碼如下:
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame]; cell.selectedBackgroundView.backgroundColor = [UIColor redColor];
設置之后滿懷期待的等待奇跡的發(fā)生,果然奇跡出現(xiàn)了枢希,但是還是有問題桌吃,就是點擊的時候確實變顏色了,push到下一個控制器之后苞轿,再回來發(fā)現(xiàn)選中的顏色還是存在的
繼續(xù)嘗試
在cell的點擊代理(didSelectRowAtIndexPath)中把cell的背景顏色在改回來,代碼如下:
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.backgroundColor = [UIColor whiteColor]; cell.selected = NO;
我發(fā)現(xiàn)這樣就ok了這么簡單茅诱,
問題
有的時候還是會有問題,點擊的時候顏色不對
- (nullable NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.backgroundColor = [UIColor redColor]; return indexPath; }
為了解決這個問題搬卒,我在這個代理方法里改變cell的背景顏色瑟俭,這個方法是在點擊上cell的時候就開始調用,那個didSelected是手抬開的時候調用契邀,這樣這個問題就完美的解決了摆寄,哈哈~
demo地址