【发布时间】:2015-03-15 11:54:01
【问题描述】:
我有一个tableviewcell,在taleviewcell 中有另一个UIView 类型的元素(让我们调用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类型的子视图改变颜色。
以前有人遇到过这个问题吗?
【问题讨论】:
-
你不能把背景颜色设置为
[UIColor clearColor]而不用担心这个吗? -
感谢您的回复,我实施了您的解决方案,仍然是同样的问题。
-
如果你把
taskCircularProgressViewOt的背景色设置为清除,就不可能出现同样的问题。 -
是的,你是对的,我在故事板中初始化了 taskCircularProgressViewOt 的颜色,只改变了 taskviewcell 的颜色,它起作用了。谢谢
-
发布错误行为的截图。
标签: ios objective-c uitableview ios7 uiview