gpt4 book ai didi

ios - 更改 cellForItemAtIndexPath 中的图像 :

转载 作者:行者123 更新时间:2023-11-29 10:49:20 27 4
gpt4 key购买 nike

我在这个 cellForItemAtIndexPath:(NSIndexPath *)indexPath 上有问题

      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{           
NSURL *imageURL = [NSURL URLWithString:[[Listname objectAtIndex:indexPath.item]coverURL]];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];

dispatch_async(dispatch_get_main_queue(), ^{

shelfcell.bookCover.image = [UIImage imageWithData:imageData];


});
});

这个 shelfcell.bookCover.image 可以显示图像但是当我使用

if (_checkversionfromBookPathF == 0.1){ shelfcell.bookCover.alpha = 0.5f;}

else if(_checkversionfromBookPathF == 1) { shelfcell.bookCover.alpha = 1.0f; }

图像将只显示 _checkversionfromBookPathF == 1 但会先显示这个_checkversionfromBookPathF == 0.1 然后是 _checkversionfromBookPathF == 1

为什么图像不去 shelfcell.bookCover.alpha = 0.5f; 请任何人解释一下。

最佳答案

您不能使用“==”直接比较 float ,使用 < 或 > 符号而不是 ==。

重复使用同一个单元格可能会出现一些问题。因为你在另一个线程中运行,加载图像需要一些时间,在它完成加载图像之前,这个单元格可能会被另一个 indexPath 重用,其中 shelfcell.bookCover.alpha = 1.0f 被执行

解决方案->

NSInteger row=indexPath.row;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *imageURL = [NSURL URLWithString:[[Listname objectAtIndex:indexPath.item]coverURL]];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];

dispatch_async(dispatch_get_main_queue(), ^{
//set image if below condition satisfies
if([tableView indexPathForCell:cell] . row == row){
shelfcell.bookCover.image = [UIImage imageWithData:imageData];
}
});

关于ios - 更改 cellForItemAtIndexPath 中的图像 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111061/

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