##题记: 最近公司的项目开始改版了,也新来了一个项目经理,项目确实比以前好看多了,要求也更苛刻了,让我们修改tableviewCell点击后的背景颜色,试了好久终于找到了解决的方法,在这里和大家分享一下!
###初次尝试 首先肯定去头文件里看看有什么属性我们觉得像的,拿来试一试再说(不管是这个问题,以后碰到类似的问题都可以这样去试试,屡试不爽!),苹果只给我们一个设置cell的背景视图,没有给我们一个设置背景颜色的属性,我尝试的设置一个背景视图,并给这个背景视图设置颜色,代码如下: cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame]; cell.selectedBackgroundView.backgroundColor = [UIColor redColor];
设置之后满怀期待的等待奇迹的发生,果然奇迹出现了,但是还是有问题,就是点击的时候确实变颜色了,push到下一个控制器之后,再回来发现选中的颜色还是存在的
###继续尝试 在cell的点击代理(didSelectRowAtIndexPath)中把cell的背景颜色在改回来,代码如下: UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.backgroundColor = [UIColor whiteColor]; cell.selected = NO;
我发现这样就ok了这么简单,
###问题 有的时候还是会有问题,点击的时候颜色不对 - (nullable NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.backgroundColor = [UIColor redColor]; return indexPath; }
为了解决这个问题,我在这个代理方法里改变cell的背景颜色,这个方法是在点击上cell的时候就开始调用,那个didSelected是手抬开的时候调用,这样这个问题就完美的解决了,哈哈~ demo地址