图像未显示在NSMutableArray的UICollectionView中

时间:2017-03-09 11:43:44

标签: ios objective-c uiimageview uicollectionview

我很长一段时间都没有回来,这是一个以前正在运行的应用程序,所以我假设它更新于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"];
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您是否在故事板中构建项目?什么是你创建的UICollectionViewCell的调试信息和graniteImageView返回的 [cell viewWithTag:100]? 确保将graniteImageView添加到单元格并具有正确的框架,检查您的单元格和图像是否有效。

答案 1 :(得分:0)

我遇到了同样的问题。我的问题使用下面的代码解决。在这里我以编程方式创建了UIImageView

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

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];

答案 2 :(得分:0)

解决了!

尝试使用图像文件夹,然后为每个类别设置子文件夹。

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

感谢你们的帮助!