代码之家  ›  专栏  ›  技术社区  ›  gabaum10

自定义UITableViewCell删除子视图

  •  0
  • gabaum10  · 技术社区  · 14 年前

    所以我有一个问题,我知道是什么导致了它,只是不知道如何解决它。基本上,我有一个TableViewCell正在加载类似这样的内容:

    BroadcastTableViewCell *cell = (BroadcastTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    /*
     * Other code to finish cell setup
     *
     */
    
    // Problem section
    CGRect frame;
        frame.size.width=50; frame.size.height=70;
        frame.origin.x=0; frame.origin.y=0;
        AsyncImageView* asyncImage = [[[AsyncImageView alloc]
                                       initWithFrame:frame] autorelease];
        asyncImage.tag = 999;
        NSURL *url = [[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://image URL/%@", trimmedPath]] autorelease];      
        [asyncImage loadImageFromURL:url];
        [cell.contentView addSubview:asyncImage];
    

    基本上,这是一种异步加载单元图像的方法,以便TableView平滑滚动。问题是,当我用现有的ID将一个新单元出列时,该图像不会被重置,并被放置在新单元下。有人知道如何检测该图像并在新单元出列时将其删除吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jason Harwig    14 年前

    只需搜索子视图 AsyncImageView 使用 viewWithTag:

    AsyncImageView* asyncImage = [cell.contentView viewWithTag:999];
    if (asyncImage == nil) {
      CGRect frame;
      frame.size.width=50; frame.size.height=70;
      frame.origin.x=0; frame.origin.y=0;
      asyncImage = [[[AsyncImageView alloc] initWithFrame:frame] autorelease];
      asyncImage.tag = 999;
      [cell.contentView addSubview:asyncImage];
    } else {
      // might want to cancel download here somehow
    }
    
    NSURL *url = [[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://image URL/%@", trimmedPath]] autorelease];      
    [asyncImage loadImageFromURL:url];