gpt4 book ai didi

ios - AFNetworkings setImageWithURLRequest 为 UITableViewCell 显示错误的图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:40 24 4
gpt4 key购买 nike

我的 tableView:cellForRowAtIndexPath 方法中使用了以下代码。我使用 AFNetworking 的 setImageWithURLRequest 来显示单元格的图像。但是,有时错误的图像会放置在我的 tableView 中的单元格上。

我认为错误是在成功 block 被触发时 contact 对象不再对应于下载的图像。

// ... init/deque ...
/* CAN BE EITHER USER OR CONTACT DETAILS */
id contact = [[self.connections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

if ([contact isKindOfClass:[User class]]) {
[cell configurateCellWithUser:(User *)contact];
if(((User*)contact).avatar_name.length > 0){
[cell.profilePicture setImageWithURLRequest:[self getURLRequestForUser:contact]
placeholderImage:[UIImage imageWithData:((User*)contact).avatar_image]
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

cell.profilePicture.image = image;
((User*)contact).avatar_image = UIImageJPEGRepresentation(image, 0.01);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
cell.profilePicture.image = [UIImage imageNamed:@"avatar_contact-card"];

}];
}else {
[cell.profilePicture setImage:[UIImage imageNamed:@"avatar_contact-card"]];
}
} else {
[cell.profilePicture setImage:[UIImage imageNamed:@"avatar_contact-card"]];
[cell configurateCellWithContactDetails:(ContactDetails *)contact];
}
return cell;

我该如何解决这个问题并为正确的单元格显示适当的图像?

最佳答案

您可能没有正确准备表格单元格以供重用。当图像请求由于重用或网络请求失败而无法到达其 UIImageView 接收器时,这可能会导致您看到旧图像。此外,URL 请求有可能出现乱序,导致正确的图像被先前可能已延迟的网络请求覆盖。

您需要确保清除 profilePicture imageView 并取消任何可能导致图像稍后更改的未决 URL 请求。

将以下代码放在您的 UITableViewCell 子类中:

- (void)prepareForReuse {
[self cancelImageRequestOperation];
self.profilePicture.image = nil;
}

确保您已经在 UITableViewCell 中导入了 UIImageView+AFNetworking 类别:

#import UIImageView+AFNetworking.h

关于ios - AFNetworkings setImageWithURLRequest 为 UITableViewCell 显示错误的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25542375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com