选择表格单元格时,附件视图背景会消失

时间:2013-01-07 06:13:48

标签: iphone ios5 uitableview uilabel background-color

我正在使用带背景的文字标签作为cell.accessoryView。选择Table后,我的附件视图背景(label.backgroundColor)会消失。我可以通过设置label.highlightedTextColor来恢复标签的文字颜色。但我无法恢复其背景颜色。有highlightedTextBackgroundcolorselectedBackgroundView吗?

UIImage *indicatorImage = [UIImage imageNamed:DISTANCE_BUBBLE];
cell.accessoryView = [[UIImageView alloc]initWithImage:indicatorImage];


distanceLabel=[[UILabel alloc]initWithFrame:cell.accessoryView.bounds];

distanceLabel.textColor=[UIColor whiteColor];
distanceLabel.textAlignment=UITextAlignmentCenter;
distanceLabel.font=[UIFont boldSystemFontOfSize:13.0];
distanceLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:DISTANCE_BUBBLE]];
distanceLabel.numberOfLines = 0;
distanceLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.accessoryView=distanceLabel;

3 个答案:

答案 0 :(得分:1)

将附件视图创建为包含一个视图中的背景和标签的视图。

答案 1 :(得分:1)

UITableViewCell子类。

它会为您提供更多控制,并使您的cellForRowAtIndexPath方法保持整洁。

答案 2 :(得分:0)

编写以下代码可能对您有所帮助。

/////////////////////////////////////////////// ///////////////// 编辑代码 ///////////////////////////////////////// /////////////////////////////////////

用于显示单元附件视图的backGroundColor

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];

        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
        cell.textLabel.textColor = [UIColor blackColor]; 
    }
    UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

    CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    [colorView setImage:image];

    [cell setAccessoryView:colorView];

    cell.textLabel.text=[self.listOfFrnd objectAtIndex:indexPath.row];

    return cell;
}

显示单元格背景视图的单元格BackGround图像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];

        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
        cell.textLabel.textColor = [UIColor blackColor];
    }
    UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

    CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
    CGContextFillRect(context, rect);

    UIGraphicsEndImageContext();

    [colorView setImage:[UIImage imageNamed:@"apple.png"]];

    [cell setAccessoryView:colorView];


    cell.textLabel.text=[self.listOfFrnd objectAtIndex:indexPath.row];

    return cell;
}

在我尝试之后,发现如果您使用多个单元 accessoryView ,则它只显示一个 accessoryView 。我不确定我是对的,但可能是真的:) 谢谢:))