views:

321

answers:

1

I'm having an issue with the label inside of my UITableViewCell blocking the background image. It seems as though it only happens on the unselected state. I tried setting the background colors to clear but that didn't do it. It's adopting the tableview's background color. Do I have to set the labels background image too?

// Neither of these worked...
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];

screen shot

Here is my cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableIdentifier"];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SimpleTableIdentifier"] autorelease];
    }

    UIImage *image = [UIImage imageNamed:@"TableRow.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.contentMode = UIViewContentModeScaleToFill;
    cell.backgroundView = imageView;
    [imageView release];

    UIImage *imageSelected = [UIImage imageNamed:@"TableRowSelected.png"];
    UIImageView *imageViewSelected = [[UIImageView alloc] initWithImage:imageSelected];
    imageViewSelected.contentMode = UIViewContentModeScaleToFill;
    cell.selectedBackgroundView = imageViewSelected;
    [imageViewSelected release];


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.textLabel.text = [[self.trivia.questionsets objectAtIndex:indexPath.row] valueForKeyPath:@"title"];

    return cell;
}

UPDATE: Kinda resolved...

If i set the background color of the table (which I assumed would be beneath everything) to clear, then all of a sudden my image shows where i expect, but the table background now shows over top of everything? Is this the expected behavior? (Haven't checked the docs on this yet)

tableView.backgroundColor = [UIColor redColor];
cell.contentView.backgroundColor = [UIColor orangeColor];
cell.textLabel.backgroundColor = [UIColor yellowColor];

screen shot 2

...and to finish, if I set both the table and cell's background colors to clear, we're good. the textlabel background color makes no difference.

tableView.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.textLabel.backgroundColor = [UIColor yellowColor];

screen shot 3

A: 

Yeah it is expected behaviour.

Your tableview is a subview that sits in front of everything else. If something was in front of the tableview (ie the background), it would obscure the table.

Malaxeur