Robert Hill
Robert Hill

Reputation: 353

UICollection View shows different results on Device than on Simulator

I'm trying to figure out what might be happening in the following code segment. I have a collection view and I'm showing saved images as thumbnails. I'm also inserting a stock "New Image" icon at the end so the user can add an additional image.

On the iPad simulator it appears fine but when I run on the device I do not see the "New Image" icon. I can touch it to open up the camera view controller for capture/selection but the image does not display. Any ideas? Here's the code...

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

static NSString *cellIdentifier = @"cvCell";

CVCell *cell = (CVCell *)[[self sectionImagesCollectionView] dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
if ([indexPath row] < [sectionImages count]){
    // Have an image so assign the photograph
    RFHSectionImages *sectionImage = [sectionImages objectAtIndex:[indexPath row]];
    UIImage *image = [UIImage imageWithData:[sectionImage photograph]];
    [[cell imageView] setImage:image];
} else {
    // Use the standard image
    UIImage *newPhoto = [UIImage imageNamed:@"New Image.png"];
    [[cell imageView] setImage:newPhoto];
}

return cell;

}

Upvotes: 1

Views: 873

Answers (2)

Eric_WVGG
Eric_WVGG

Reputation: 2947

I had a similar problem, but the culprit was network latency — had to manually call self.collectionView.reloadData() to get things showing up. Locally, the data apparently loaded quickly enough that this wasn’t an issue.

Upvotes: 0

Undo
Undo

Reputation: 25697

Here's a small detail that many developers have wasted hours upon:

Case Sensitivity

Really, it all boils down to:

  • iPhone Simulator: Case-Insensitive
  • iOS device: Case-Sensitive

So, you might have 'New Image.png' in your code, but the actual image name is 'new image.png'. It might even be something like 'nEw iMaGe.png'.

This will work fine on the simulator, but not on the device - the device simply won't find the image.

This has happened to me for everything from images to plists.

Check your Cases!

Upvotes: 3

Related Questions