选择UITableViewCell背景颜色的Objective c子视图

时间:2012-12-11 18:37:53

标签: objective-c uitableview addsubview

大家好我对ios相当新,所以还有很多需要学习的内容,我将动态背景颜色的子视图从webservice添加到表格单元格但是选择子视图背景颜色正在改变为表格单元格选择的状态颜色,我知道它为什么这样做,因为它改变了视图中的所有子视图背景颜色,我似乎无法解决如何阻止它改变子视图背景颜色,我希望它保持为选择的动态颜色?

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 个答案:

答案 0 :(得分:0)

您可以尝试更改tablecellview的selectedBackgroundView子视图,以获取您要查找的颜色更改。

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

答案 1 :(得分:0)

如果您使用的是普通样式的表,那么您需要使用所需的背景颜色alloc-init一个新的UIView,然后将其分配给selectedBackgroundView。

或类似的东西,

cell.selectionStyle = UITableViewCellSelectionStyleGray;

答案 2 :(得分:0)

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

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

//System do not know this method :)
-(void) mySetBackgroundColor:(UIColor *)backgroundColor
{
    [super setBackgroundColor:backgroundColor];
}

答案 3 :(得分:0)

UITableViewCell由于某种原因更改了所有子视图的backgroundColor。

这可能会有所帮助:

DVColorLockView