图像未显示在我的 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:我的意思是初始化alloc
init
你的单元格。
【讨论】:
以上是关于图像未显示在我的 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章
简单的UICollectionView显示图像表现奇怪:某些图像显示正确,有些图像位置错误,有些图像丢失
如何在 UICollectionView 的部分标题中显示图像和标签?
在 UICollectionview 中显示 UIImageview