1

大家好,我对 ios 还很陌生,所以还有很多东西要学,我将一个具有动态背景颜色的子视图从 web 服务添加到表格单元格,但是在选择子视图时背景颜色正在更改为表格单元格选定的状态颜色,我知道为什么它这样做是因为它改变了视图中的所有子视图背景颜色,我似乎无法弄清楚如何阻止它也改变子视图背景颜色,我希望它保持选择的动态颜色?

array = [colors objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIView *colorBox = [[UIView alloc] initWithFrame:CGRectMake(10,10,20,20)];
        [colorBox setTag:1];            
        [cell.contentView addSubview:colorBox];
    }

 UIView *box = [cell viewWithTag:1];
 box.backgroundColor = [self colorForBox:array.color];

 return cell;

然后得到颜色

- (UIColor *)colorForTransport:(NSString*)Line {

if([Line isEqualToString:@"Brown"])
    return [UIColor colorWithRed:0.682 green:0.38 blue:0.094 alpha:1];

else if([Line isEqualToString:@"Red"])
    return [UIColor colorWithRed:0.894 green:0.122 blue:0.122 alpha:1];

else
    return DefaultBackgroundColor;
}

任何帮助将不胜感激谢谢!

4

4 回答 4

0

如果您使用的是普通样式表,则需要分配初始化具有所需背景颜色的新 UIView,然后将其分配给 selectedBackgroundView。

或者类似的东西,

cell.selectionStyle = UITableViewCellSelectionStyleGray;
于 2012-12-11T19:00:53.243 回答
0

您可以创建从 UIView 继承的新子类。然后重写 setBackgroundColor 什么都不做。并添加您自己的方法来设置背景颜色。这样,系统将无法覆盖您的背景颜色,您可以使用新方法设置任何颜色:)

-(void) setBackgroundColor:(UIColor *)backgroundColor
{
    //do nothing
}

//System do not know this method :)
-(void) mySetBackgroundColor:(UIColor *)backgroundColor
{
    [super setBackgroundColor:backgroundColor];
}
于 2013-09-11T15:42:30.473 回答
0

UITableViewCell 出于某种原因在选择时更改了所有子视图的背景颜色。

这可能会有所帮助:

DVColorLockView

于 2014-10-22T08:39:02.500 回答
0

您可以尝试更改 tablecellview 的 selectedBackgroundView 子视图以获取您正在寻找的颜色变化。

有关该属性的更多信息,请参阅http://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/selectedBackgroundView

于 2012-12-11T18:45:46.443 回答