我有一个tableView。在选择任何行时,我正在推送另一个viewcontroller。我正在改变所选单元格的颜色。但是现在当我从其他viewcontroller返回并选择另一行时,之前选择的单元格颜色保持不变。我已经做了以下更改,但它无法正常工作。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES];
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor=[UIColor whiteColor];
}
这就是我将背景颜色应用于单元格的方式:
-(UIView *)selectedCellView{
UIView *cellView=[[UIView alloc]init];
//cellView.backgroundColor=RGB(155,130,110);
cellView.backgroundColor=[UIColor lightGrayColor];
return cellView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell.selectedBackgroundView=[self selectedCellView];
...
}
答案 0 :(得分:0)
cellForRowAtIndexPath
,这意味着您要为每个滚动分配一个UIView实例。这会在defaultSelectionView上方添加一个视图。更简单的方法是更改cell.contentView.backgroundColor
中的didSelectRowAtIndexPath
并将其更改回didDeselectRowAtIndexPath
答案 1 :(得分:0)
cellForRowAtIndexPath
每当创建单元格时调用此方法,因此根据单元格的数量,将调用它。因此,您只需更改in didSelectRowAtIndexPath
方法,然后在didDeselectRowAtIndexPath
方法中更改回原始颜色即可。您还可以使用突出显示选项显示cell.selectionStyle
的所选单元格。还有一件事情不需要在didDeselectRowAtIndexPath
中简单地调用didSelectRowAtIndexPath
方法你可以改变颜色并推送或呈现你的第二个视图控制器,并且在推或呈现改变颜色的细胞之前回到原来的颜色。