Objective c 重新使用自定义UITableViewCells,在加载新图片之前先简要查看旧UIView图片
我有一个自定义UITableViewCell,其中包含一个UIView,我在其中显示了几张图片 在我的tableView:cellForRowAtIndexPath:function中,我调用dequeueReusableCellWithIdentifier:重用旧的自定义单元格,然后用新图片更新它们 问题是,当我在屏幕上快速滚动时,我会在加载新图片之前看到旧图片的闪烁,这很不吸引人 我已尝试通过以下方式解决此问题:Objective c 重新使用自定义UITableViewCells,在加载新图片之前先简要查看旧UIView图片,objective-c,uitableview,uiview,uiimageview,reuseidentifier,Objective C,Uitableview,Uiview,Uiimageview,Reuseidentifier,我有一个自定义UITableViewCell,其中包含一个UIView,我在其中显示了几张图片 在我的tableView:cellForRowAtIndexPath:function中,我调用dequeueReusableCellWithIdentifier:重用旧的自定义单元格,然后用新图片更新它们 问题是,当我在屏幕上快速滚动时,我会在加载新图片之前看到旧图片的闪烁,这很不吸引人 我已尝试通过以下方式解决此问题: 在自定义TableViewCell实现文件中实现prepareForReus
- 在自定义TableViewCell实现文件中实现prepareForReuse;这导致相同的三个UIView一次又一次出现,在这种情况下,新图片完全停止加载
- 在调用dequeueReusableCellWithIdentifier后立即清除UIView,方法是使用for循环删除所有子视图;该应用程序现在需要很长时间才能加载图片
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"Blah";
blahCell *someCell = (blahCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!someCell) {
//initialize cell
} else {
someCell.imageContainerView = nil;
}
... (other code here)
}
您可以通过使用此
UIImageView
类别
每当你需要设置一个新的映像时,你只需要调用
[someCell.imageContainerView setImageWithURL:url placeholderImage:placeholderImage];
现在,无论何时滚动,如果未加载图像,您将看到一个占位符图像,而不是以前的单元格图像。我会尝试将单元格的imageView属性设置为
nil
,作为表视图数据源方法cellForRowAtIndexPath
的第一步,我一直在尝试,但一直没有成功。我已经更新了我的问题,加入了我当前的代码。我已经用它来设置我的图像,但它仍然不起作用