自定义 UITableViewCell 删除子视图
Posted
技术标签:
【中文标题】自定义 UITableViewCell 删除子视图【英文标题】:Custom UITableViewCell Removing a subview 【发布时间】:2010-10-19 14:08:27 【问题描述】:所以我有一个问题并且确切地知道是什么导致它,只是不知道如何解决它。基本上我有一个 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];
基本上这是一种异步加载单元格图像的方法,以便表格视图平滑滚动。问题是,当我将具有现有 ID 的新单元格出列时,图像不会被重置并被放置在新单元格下。有谁知道如何检测该图像并在新单元出列时将其删除?
【问题讨论】:
【参考方案1】:只需使用 viewWithTag:
在子视图中搜索您的 AsyncImageView
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];
【讨论】:
太棒了,这实际上很有意义,因为这就是我首先添加标签的原因 XD 感谢您的帮助! 这实际上也有助于提高效率。 :) 赢/赢。以上是关于自定义 UITableViewCell 删除子视图的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell - 似乎无法添加子视图
在自定义 UITableViewCell 的子视图中添加 UIViewController
自定义 UITableViewCell 打开不同的 xib 子视图