iOS同时改变tableviewcell及其子视图的颜色

时间:2015-01-16 19:29:21

标签: ios objective-c uitableview ios7 uiview

我有一个tableviewcellUIView中有另一个taleviewcell类型的元素(让我们调用A),并希望执行以下操作:

每当我点击tableviewcell时,其颜色将从红色变为灰色,因为A位于tableviewcell,其颜色也应该更新。无论何时再次点击,它们的颜色必须从灰色反转回红色。

首先,我在didSelectRowAtIndexPath方法上捕获事件。然后我将rowIndex保留在cellForRowAtIndexPath方法中使用的地方并致电:

self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 

cellForRowAtIndexPath方法中,我检查,如果indexPath.row == rowIndex,那么它就是我点击改变颜色的那个,我确实改变了它的颜色:

    cell.taskCircularProgressViewOt.backgroundColor =[UIColor colorWithRed:0.0/255.0 green:134.0/255.0 blue:241.0/255.0 alpha:1];

    cell.contentView.backgroundColor = [UIColor colorWithRed:0.0/255.0 green:134.0/255.0 blue:241.0/255.0 alpha:1];

问题在于,UIView element (A)的更改后,tableviewcell的颜色会略有变化。也就是说,tableviewcell的颜色首先发生变化,在几毫秒之后,它的UIView类型的子视图会改变它的颜色。

以前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

正如MacDonald建议的那样,我在故事板中初始化了taskCircularProgressViewOt的颜色,并使用[UIColor clearColor]更改了taskviewcell的颜色,这很有效。