图像未显示在我的 UICollectionView

Posted

技术标签:

【中文标题】图像未显示在我的 UICollectionView【英文标题】:Image not showing in my UICollectionView 【发布时间】:2013-11-26 07:08:35 【问题描述】:

所以我一直在寻找解决此问题的方法,但似乎找不到任何东西。我有一个数组,我使用以下方法加载图像路径

- (IBAction)btnPictures:(id)sender 

// Create the next view controller.
ImageGalleryViewController *galleryViewController = [[ImageGalleryViewController alloc] initWithNibName:@"ImageGalleryViewController" bundle:nil];


// Search for paths and get users home directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
// get path at first index (in case multiple returned
NSString *documentsDirectory = [paths objectAtIndex:0];

NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];
NSArray *files = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"pathExtension IN %@", @"png"]];

// Pass the selected object to the new view controller.
[galleryViewController setImageArray:files];

// Push the view controller.
[self.navigationController pushViewController:galleryViewController animated:YES];


然后将该图像数组发送到我的 UICollectionViewController 中的以下方法

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView       cellForItemAtIndexPath:(NSIndexPath *)indexPath

ImageGalleryViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ImageGalleryViewCell" forIndexPath:indexPath];

NSLog(@"Image at index %@", [imageArray objectAtIndex:indexPath.row]);

[cell.galleryImage setImage:[UIImage imageWithContentsOfFile:[imageArray objectAtIndex:indexPath.row]]];

[cell setBackgroundColor:[UIColor whiteColor]];
return cell;

我通过我的 NSLog 验证了 objectAtIndex 正在返回一个有效的图像名称,但由于某种原因,单元格没有显示它。

非常感谢任何帮助,在此先感谢。

【问题讨论】:

尝试将ImageGalleryViewCell 更改为collectionView: cellForItemAtIndexPath() 方法中的返回类型。也许它有效。 【参考方案1】:

NSFileManager 的-contentsOfDirectoryAtPath: 返回的数组不提供完整的文件路径,只提供文件和目录的名称。您必须将数组中的每个值附加到文档目录的路径中。

类似这样的:

NSString *documentsDirectoryPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *imagePath = [documentsDirectoryPath stringByAppendingPathComponent:[imageArray objectAtIndex:indexPath.row]];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

【讨论】:

就是这样,对于菜鸟的错误感到抱歉:) 再次感谢! 没问题。我自己曾经遇到过这个问题。 :)【参考方案2】:

我怀疑,在使用(去队列)一个之前,您没有初始化任何单元格。初始化您的单元,然后重试。祝你好运!

PS:我的意思是初始化allocinit你的单元格。

【讨论】:

以上是关于图像未显示在我的 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

简单的UICollectionView显示图像表现奇怪:某些图像显示正确,有些图像位置错误,有些图像丢失

如何在 UICollectionView 的部分标题中显示图像和标签?

在 UICollectionview 中显示 UIImageview

启动图像未显示在我的 iOS 应用程序中

uicollectionview 可重用单元格图像在滚动时加载

从 iphone 图片库中获取所有图片并在 UICollectionView 中显示