Johannes Ruof
Johannes Ruof

Reputation: 63

Collection View Cell does not display image in image view

I am trying to create a simple gallery for an iOS application. I'm working with a UICollectionView inside of a ViewController. Everything seems to be working fine, but I can't get the image I'm trying to use to display inside of the collection view cell. I will just dump some code here, I have been desperate to find a solution but nothing seems to work.

This is the gallery.m file:

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
{
    //just a random value for testing
    return 2;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:   (NSInteger)section
{
    //another random test value
    return 5;
}

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

    customCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier
                                          forIndexPath:indexPath];
    //UIImage *image = [dataArray objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:@"skull.png"];

    //I tried all of the below code to get the image to show but nothing seemed to work
    //[cell.imageView setImage:[UIImage imageNamed:@"skull.png"]];
    //[cell.imageView setNeedsDisplay];
    //[cell.imageView reloadInputViews];
    return cell;
}

This is the customCell.h file (the UIImageView outlet is connected to the image view inside of the collection view cell):

#import <UIKit/UIKit.h>

@interface customCell : UICollectionViewCell
@property (strong, nonatomic) IBOutlet UIImageView *imageView;

@end

Concerning the connections in the storyboard everything should be fine, also it would be difficult to show here but I will try to explain anyways. The UICollectionView is connected in the gallery.h file like so:

@interface gallery : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>

@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;


@end

The collection view cell in the storyboard has the custom class "customCell" and identifier "customCell".

If anybody could point me to where my mistake could be it would be awesome! Thank you!

Upvotes: 1

Views: 5137

Answers (2)

Anand
Anand

Reputation: 1946

I had this very similar problem. I could not display image view inside uicollection view cell, when storyboard is used. I just removed the following code in ViewDidLoad of CollectionViewController:

//[self.collectionView registerClass:[CustomCollectionViewCell class]forCellWithReuseIdentifier:reuseIdentifier];

Now the ImageView is displayed inside cell.

Upvotes: 6

Verdant
Verdant

Reputation: 288

Look in the storyboard, sometimes in cells, xCode set images frame to (0,0,0,0). It made me crazy a lot of times ^^

EDIT : To create a custom collection cell, create an empty XIB file. Add a collectionViewCell in it with all you want. Make the connections with you .h file.

In your viewController -> viewDidLoad method add

[myCollectionView registerNib:[UINib nibWithNibName:@"collectionCellXIB" bundle:nil] forCellWithReuseIdentifier:myIdentifier];

And in cellForRowAtIndexPath

customCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:myIdentifier forIndexPath:indexPath];

if(!cell)
{
    cell = [collectionView dequeueReusableCellWithReuseIdentifier:myIdentifier forIndexPath:indexPath];
}

Upvotes: 1

Related Questions