Ios NSMutableArray的UICollectionView中未显示图像

Ios NSMutableArray的UICollectionView中未显示图像,ios,objective-c,uiimageview,uicollectionview,Ios,Objective C,Uiimageview,Uicollectionview,我从一个很长的时间了回来,这是一个以前工作的应用程序,所以我假设这是由于在较新版本的操作系统iOS的变化 当我在模拟器上运行应用程序时,不会显示任何图像,但会创建单元格并显示名称。我知道我肯定在什么地方错过了什么,但我一辈子都看不到,不过我不熟悉最近的变化 非常感谢您的帮助,以下是我的代码: - (void)createData { self.graniteImages = [NSMutableArray array]; [self.graniteImages addObje

我从一个很长的时间了回来,这是一个以前工作的应用程序,所以我假设这是由于在较新版本的操作系统iOS的变化

当我在模拟器上运行应用程序时,不会显示任何图像,但会创建单元格并显示名称。我知道我肯定在什么地方错过了什么,但我一辈子都看不到,不过我不熟悉最近的变化

非常感谢您的帮助,以下是我的代码:

- (void)createData {

    self.graniteImages = [NSMutableArray array];

    [self.graniteImages addObject:[[NSMutableDictionary alloc]
                                  initWithObjectsAndKeys:@"Angel Cream", @"name",
                                  @"angel-cream.jpg", @"image", nil]];
    [self.graniteImages addObject:[[NSMutableDictionary alloc]
                                  initWithObjectsAndKeys:@"Angola Black", @"name" ,
                                  @"angola_black1.jpg", @"image" , nil]];
    [self.graniteImages addObject:[[NSMutableDictionary alloc]
                                  initWithObjectsAndKeys:@"Angola Silver", @"name" ,
                                  @"angola-silver1.jpg", @"image" , nil]];

    [self.collectionView reloadData];

}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.graniteImages.count;
}


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

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

    UIImageView *graniteImageView = (UIImageView *)[cell viewWithTag:100];
    graniteImageView.image = [UIImage imageNamed:[[self.graniteImages objectAtIndex:indexPath.row] objectForKey:@"image"]];

    return cell;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (_startingIndexPath) {
        NSInteger currentIndex = floor((scrollView.contentOffset.x - scrollView.bounds.size.width / 1) / scrollView.bounds.size.width) + 1;
        if (currentIndex < [self.graniteImages count]) {
            self.title = self.graniteImages[currentIndex][@"name"];
        }
    }
}
-(void)创建数据{
self.graniteImages=[NSMutableArray];
[self.graniteImages addObject:[[NSMutableDictionary alloc]
initWithObjectsAndKeys:@“天使霜”@“名称”,
@"天使乳霜.jpg,"图像,无]];;
[self.graniteImages addObject:[[NSMutableDictionary alloc]
initWithObjectsAndKeys:@“安哥拉黑”@“名称”,
@“angola_black1.jpg”,@“image”,无]];
[self.graniteImages addObject:[[NSMutableDictionary alloc]
initWithObjectsAndKeys:@“安哥拉银币”@“名称”,
@“angola-silver1.jpg”,@“image”,无]];
[self.collectionView-reloadData];
}
-(NSInteger)collectionView:(UICollectionView*)collectionView项目编号截面:(NSInteger)截面{
返回self.graniteImages.count;
}
-(UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{
静态NSString*标识符=@“单元格”;
UICollectionViewCell*cell=[collectionView dequeueReusableCellWithReuseIdentifier:indexPath的标识符:indexPath];
UIImageView*graniteImageView=(UIImageView*)[带标记的单元格视图:100];
graniteImageView.image=[UIImage imageNamed:[[self.graniteImages objectAtIndex:indexath.row]objectForKey:@“image”];
返回单元;
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
if(_startingIndexPath){
NSInteger currentIndex=floor((scrollView.contentOffset.x-scrollView.bounds.size.width/1)/scrollView.bounds.size.width)+1;
如果(当前索引<[self.graniteImages count]){
self.title=self.graniteImages[currentIndex][@“name”];
}
}
}

您是否在故事板中构建项目?关于您创建并从中返回的
UICollectionViewCell
的调试信息是什么
[带标签的单元格视图:100]

确保您已将graniteImageView添加到单元格中,并且具有正确的边框,检查您的单元格和图像是否有效。

我遇到了相同的问题。我的问题通过以下代码得到解决。在此过程中,我以编程方式创建了UIImageView

UIImageView*graniteImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0,0,cell.frame.size.width,cell.frame.size.height)]

解决了

试图用一个图像文件夹,然后是每个类别的子文件夹来组织

当我将所有内容从子文件夹移动到图像文件夹时,它们都开始显示


谢谢你们的帮助,伙计们

您可以尝试查看imageNamed是否返回实际图像,可能资产发生了问题,您可以按名称加载这些图像吗?看起来您可能使用的是文件名而不是资产名。您的图像在资产文件中吗?然后尝试删除“.jpg”扩展名@JackRobinson可能是对的,您的图像可能没有被加载。您是否设置了uiImageView的标记,并且图像名称在您的资产或捆绑包中应该是相同的。@JackRobinson感谢让我检查我喜欢的这么多代码,只有在移动必须对其重新索引的文件后,它才起作用。。。许多小时的挫折治愈了lol
graniteImageView.image = [UIImage imageNamed:[[self.graniteImages objectAtIndex:indexPath.row] objectForKey:@"image"]];

graniteImageView.contentMode = UIViewContentModeScaleAspectFit;

graniteImageView.tag = indexPath.row;// Add here what tag you need

[cell addSubview:graniteImageView];