gpt4 book ai didi

ios - CollectionView prepareForSegue 不将图像数据发送到 DetailView

转载 作者:行者123 更新时间:2023-11-29 03:00:27 25 4
gpt4 key购买 nike

我有一个显示来自服务器的远程图像数据的 CollectionView 设置。我可以在 CollectionView 中查看图像,但是当我点击 DetailView 的项目时没有任何显示。当我使用本地镜像时它工作正常,但是在添加"SDWebImage 框架" 后,当我点击它们以显示DetailView 时,我无法查看图像。我认为问题在于 prepareForSegue 方法,但我尝试过的任何方法都无法解决问题。我在“StackOverflow”上搜索了很多问题,但找不到这个特定问题的答案。

这是我的 CollectionViewController 代码:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"Cell";

CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

[cell.thumbnailView setImageWithURL:[NSURL URLWithString:[photos objectAtIndex:indexPath.row]] placeholderImage:[UIImage imageNamed:@"logo.png"] options:SDWebImageRefreshCached];

return cell;

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"displayDetail"]) {
PhotoViewController *destViewController = (PhotoViewController *)segue.destinationViewController;
NSIndexPath *indexPath = [self.collectionView indexPathForCell:sender];
NSString *imagePath = [photos objectAtIndex:indexPath.row];
UIImage *image = [UIImage imageNamed:imagePath];
NSLog(@"Image named: %@ at row %ld", imagePath, (long)indexPath.row);
destViewController.largeImage = image;
}
}

segue 触发良好,但在 PhotoViewController.m 中被点击后只显示白屏。

最佳答案

根据我在您的代码中看到的内容,您使用 setImageWithURL 构建了 thumbnailView SDWebImage 的方法类(class)。

然后当你建立你的大 View 时,你将图像的 url 传递给 [UIImage imageNamed:imagePath] .

从 SDWebImage 的文档中,我看到它是对 UIImageView 的扩展。所以你可以简单地调用[destViewController.imageView setImageWithURL:...]在你的 segue 准备中。

你的 prepareForSegue然后应该看起来像这样:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"displayDetail"]) {
PhotoViewController *destViewController = (PhotoViewController *)segue.destinationViewController;
NSIndexPath *indexPath = [self.collectionView indexPathForCell:sender];
NSString *imagePath = [photos objectAtIndex:indexPath.row];
NSLog(@"Image named: %@ at row %ld", imagePath, (long)indexPath.row);

[destViewController.imageView
setImageWithURL:[NSURL URLWithString:imagePath]
placeholderImage:[UIImage imageNamed:@"logo.png"]
options:SDWebImageRefreshCached];
}
}

编辑:

viewDidLoad你的 PhotoViewController 你将不必做任何事情。只要确保你导入 #import <SDWebImage/UIImageView+WebCache.h>在你实现 prepareForSegue 的文件中.

关于ios - CollectionView prepareForSegue 不将图像数据发送到 DetailView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374418/

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