gpt4 book ai didi

iphone - UITableViewCell 显示 UIImageView 或 UIProgressView

转载 作者:行者123 更新时间:2023-12-01 16:53:45 26 4
gpt4 key购买 nike

我正在异步下载图像并将它们显示在 UITableView 中。下载图像时,UIProgressView 应显示在相应的表格行中。下载完成后,进度 View 应替换为实际图像。

我正在使用 Storyboard ,并将 UITableViewCell 子类化为一个名为 ResponseTableViewCell 的类,该类具有用于 UIImageView responseView 的 IBOutlets 和 UIProgressView (progressView)。由于某种原因,我无法在下载完成后隐藏进度 View 。如果我不隐藏它,它会出现在下载图像的顶部。如果我试图隐藏它,它会为每一行隐藏。我猜这与重复使用细胞有关。

我还尝试创建两个自定义单元格:一个带有 UIImageView,另一个带有 UIProgressView。但是在 Storyboard 中,我可以添加 UITableViewCell 的唯一方法是将其拖到 UITableView 上,这意味着我有两个 UITableViewCells 在彼此之上。

似乎可行的唯一方法是以编程方式创建 ImageView 和进度 View ,而不是继承 UITableViewCell 但我不想这样做。这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ResponseTableViewCell *cell = (ResponseTableViewCell*)
[tableView dequeueReusableCellWithIdentifier:@"ResponseCell"];

if(indexPath.row == 0) {//display the main image

cell.responseView.image = _image;
[cell.progressView setHidden:YES];
return cell;
}
//display responses to the image
indexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
Photo *response = [ self getResponseAtIndex:indexPath.row];
NSMutableDictionary* downloadInfo = [self getConnectionInfoForId:[response photoId]];
if([response fullImage] == nil) {
float received = [[downloadInfo objectForKey:@"receivedBytes"] floatValue];
float total = [[downloadInfo objectForKey:@"totalFileSize"] floatValue];

NSNumber* percentage= [NSNumber numberWithFloat:received/total];
NSMutableDictionary* userInfo = [[NSMutableDictionary alloc] init];
[userInfo setObject:cell.progressView forKey:@"cell"];
[userInfo setObject:percentage forKey:@"percentage"]; /

[self performSelectorOnMainThread:@selector(updateProgressView:) withObject:userInfo waitUntilDone:NO
];
return cell;
}
else {
cell.responseView.image = response.fullImage;
return cell;
}
}

最佳答案

我怀疑这可能与您发布的代码之外的东西有关。但另一个问题是

        [cell.progressView setHidden:YES];

因为我看到你后来在主线程上仔细更新了progressvView,但是你没有执行 setHidden在主线程上。它是一个 UIProgressView,UI 代码应该在主线程上,甚至可能像 setHidden 这样小。计数。

关于iphone - UITableViewCell 显示 UIImageView 或 UIProgressView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615749/

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