2017-03-09 10 views
0

私は非常に長い時間から戻ってきました。これは以前は動作していたアプリでしたので、新しいバージョンのiOSでは変更されていると思います。NSMutableArrayのUICollectionViewに画像が表示されない

私はシミュレータ上でアプリケーションを実行すると、画像は表示されませんが、セルが作成されていて、名前が表示されています。私はどこかで何かを逃しているに違いないが、私の人生ではそれを見ることができないことを知っている。しかし、私は最近の変化に精通していない。

すべてのヘルプははるかに高く評価し、これは私のコードです:

- (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"]; 
     } 
    } 
} 
+2

imageNamedが実際の画像を返すかどうか試してみることができます。おそらく何か資産が発生していますが、その画像を別の名前で読み込むことはできますか? – JackRobinson

+0

アセット名ではなくファイル名を使用している可能性があります。 – torinpitchers

+0

あなたの画像はアセットファイルにありますか?次に、 '.jpg'拡張子を削除してみます。 @ JackRobinsonはおそらく正しいです、あなたのイメージはロードされていない可能性があります。 – vitormm

答えて

0

解決済み!

イメージフォルダとあまりにも整理しようとしていたが、それぞれのカテゴリにサブフォルダがありました。

サブフォルダからすべてのものをイメージフォルダに移動すると、すべて表示され始めました。

皆さん、ありがとうございます!

+0

@JackRobinson私がチェックしてくれてくれてありがとう、あまりにも多くのコードが好きだったのは、ファイルを移動した後であっても、それを再索引付けしなければならないということでした...多くの時間は、 – David

0

あなたはストーリーボードでプロジェクトをビルドしていますか? UICollectionViewCellのデバッグ情報は何ですか?graniteImageViewは [cell viewWithTag:100]から返されましたか? graniteImageViewをセルに追加し、フレームが正しいことを確認して、セルと画像が有効かどうかを確認してください。

0

は、私は同じだissue.And私の問題は、この私がプログラム

UIImageView * graniteImageView = [[UIImageViewのalloc] initWithFrame UIImageViewを作成しcode.Inの下に使用して解決される: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]; 
関連する問題