UITableView单元格:selectedBackgroundView,不显示backgroundView

时间:2012-04-04 00:58:50

标签: cocoa-touch ipad uitableview

我想设置2个完全不同的单元格外观(和内容)。 (一个选中,一个未选中)。

此代码有效,但是因为所选单元格的图像透明度为50%,我可以在底部看到BackgroundView。

在clear中,selectedBackgroundView提供了一种很好的方法来填充单元格,其中元素仅在选中时可见。是否有另一个位置而不是BackgroundView来填充单元格,这个位置将不会出现在selectedBackgroundView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSString *cellIdentifier = @"hello";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
  if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
  }


    UIImage *image = [UIImage imageNamed:@"listview_btn.png"];
    UIImage *imageThumb = [UIImage imageNamed:@"01_thumb.jpg"];
    UIImageView* imageView = [[UIImageView alloc] initWithImage:imageThumb];
    [imageView setFrame:CGRectMake(0, 0, 50, 67)];
    [cell setBackgroundView:[[UIImageView alloc]initWithImage:image] ];
    [cell.backgroundView addSubview:imageView];



    UIImage *imageSel = [UIImage imageNamed:@"listview_btn_on.png"];
    UIImage *imageThumbSel = [UIImage imageNamed:@"01_thumb_Sel.jpg"];
    UIImageView* imageViewSel = [[UIImageView alloc] initWithImage:imageThumbSel];
    [imageViewSel setFrame:CGRectMake(110, 0, 50, 67)];
    [cell setSelectedBackgroundView:[[UIImageView alloc]initWithImage:imageSel] ];
    [cell.selectedBackgroundView addSubview:imageViewSel];

1 个答案:

答案 0 :(得分:0)

使选定的背景视图不透明。由于它总是插在背景视图上方,因此您可以在Photoshop或其他图形编辑器中将它们合成,并将结果用作选定的背景视图。

如果你买不起这种方法(我仍然强烈推荐它),你可以继承UITableViewCell并覆盖setHighlighted:animatedsetSelected:animated以在选择时将背景视图属性设置为nil /突出显示并在取消选择/取消突出显示时恢复它。然而,它是一种更为复杂的方法,恕我直言。