lucgian841
lucgian841

Reputation: 2002

CollectionViewCell unrecognized selector sent to instance

In my app I will use a collection view, but I'm having issue. I designed the collection view in the storyboard. I inserted a collection view in a view controller and I connected the delegate and the data source to the class (CategoryViewController.m) who has to manage this view controller. I created a very simple cell in which I put an image view, then I create a class with subclass UICollectionViewCell, then I choose the class who manage the cell and I connect the image view to this class. In the CategoryViewController.m I setup an array in which there are the image I want to show and I used the delegate methods of the UICollectionView, when I run the app it says me: unrecognized selector sent to instance. I will put here the code so you can help me to fix it:

Code to create the array of image:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIImage *image1 = [UIImage imageNamed:@"image_glasses.png"];
    UIImage *image2 = [UIImage imageNamed:@"image_jacket.png"];
    UIImage *image3 = [UIImage imageNamed:@"image_pants.png"];
    UIImage *image4 = [UIImage imageNamed:@"image_scent.png"];
    imageArray = [NSArray arrayWithObjects:image1, image2, image3, image4, nil];
}

Delegate methods of the UICollectionView:

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

- (UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    UIImage *image = [UIImage imageNamed:imageArray[indexPath.row]];
    cell.imageViewCell.image = image;

    return cell;
}

When I run the app it crashes here: UIImage *image = [UIImage imageNamed:imageArray[indexPath.row]];, what's wrong in my methods?

Update:

Here's the full crash log:

2013-11-27 10:54:34.853 BitmamaShop[1579:70b] -[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0xbe79910
2013-11-27 10:54:34.858 BitmamaShop[1579:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0xbe79910'
*** First throw call stack:
(
    0   CoreFoundation                      0x025445e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x022c78b6 objc_exception_throw + 44
    2   CoreFoundation                      0x025e1903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x0253490b ___forwarding___ + 1019
    4   CoreFoundation                      0x025344ee _CF_forwarding_prep_0 + 14
    5   UIKit                               0x01687d65 -[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:] + 42
    6   UIKit                               0x016880c2 -[_UIAssetManager imageNamed:scale:idiom:subtype:] + 73
    7   UIKit                               0x0168810e -[_UIAssetManager imageNamed:idiom:subtype:] + 71
    8   UIKit                               0x0168814f -[_UIAssetManager imageNamed:idiom:] + 60
    9   UIKit                               0x01688189 -[_UIAssetManager imageNamed:] + 53
    10  UIKit                               0x01062173 +[UIImage imageNamed:] + 57
    11  BitmamaShop                         0x0000794f -[CategoryViewController collectionView:cellForItemAtIndexPath:] + 255
    12  UIKit                               0x01647bc8 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:] + 257
    13  UIKit                               0x01649217 -[UICollectionView _updateVisibleCellsNow:] + 3677
    14  UIKit                               0x0164c57f -[UICollectionView layoutSubviews] + 267
    15  UIKit                               0x010a0267 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
    16  libobjc.A.dylib                     0x022d981f -[NSObject performSelector:withObject:] + 70
    17  QuartzCore                          0x00d022ea -[CALayer layoutSublayers] + 148
    18  QuartzCore                          0x00cf60d4 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    19  QuartzCore                          0x00d04715 -[CALayer(CALayerPrivate) layoutBelowIfNeeded] + 43
    20  UIKit                               0x01092c76 -[UIView(Hierarchy) layoutBelowIfNeeded] + 595
    21  UIKit                               0x01092a1d -[UIView(Hierarchy) layoutIfNeeded] + 74
    22  UIKit                               0x0116ef14 -[UINavigationController _layoutViewController:] + 1062
    23  UIKit                               0x0116e136 -[UINavigationController _layoutTopViewController] + 176
    24  UIKit                               0x0116c365 -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:] + 429
    25  UIKit                               0x0135b5f6 -[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:] + 328
    26  UIKit                               0x0135b8fb -[UINavigationTransitionView _cleanupTransition] + 703
    27  UIKit                               0x0135b93a -[UINavigationTransitionView _navigationTransitionDidStop] + 55
    28  UIKit                               0x01081c6c -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 267
    29  UIKit                               0x01080455 +[UIViewAnimationState popAnimationState] + 334
    30  UIKit                               0x01094cf6 +[UIView(Animation) commitAnimations] + 36
    31  UIKit                               0x0135b3f9 -[UINavigationTransitionView transition:fromView:toView:] + 2795
    32  UIKit                               0x0135a906 -[UINavigationTransitionView transition:toView:] + 55
    33  UIKit                               0x0116fd47 -[UINavigationController _startTransition:fromViewController:toViewController:] + 3186
    34  UIKit                               0x0117009c -[UINavigationController _startDeferredTransitionIfNeeded:] + 645
    35  UIKit                               0x01170cb9 -[UINavigationController __viewWillLayoutSubviews] + 57
    36  UIKit                               0x012aa181 -[UILayoutContainerView layoutSubviews] + 213
    37  UIKit                               0x010a0267 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
    38  libobjc.A.dylib                     0x022d981f -[NSObject performSelector:withObject:] + 70
    39  QuartzCore                          0x00d022ea -[CALayer layoutSublayers] + 148
    40  QuartzCore                          0x00cf60d4 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    41  QuartzCore                          0x00cf5f40 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
    42  QuartzCore                          0x00c5dae6 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294
    43  QuartzCore                          0x00c5ee71 _ZN2CA11Transaction6commitEv + 393
    44  QuartzCore                          0x00d1b430 +[CATransaction flush] + 52
    45  UIKit                               0x01051dc9 _afterCACommitHandler + 131
    46  CoreFoundation                      0x0250c4ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
    47  CoreFoundation                      0x0250c41f __CFRunLoopDoObservers + 399
    48  CoreFoundation                      0x024ea344 __CFRunLoopRun + 1076
    49  CoreFoundation                      0x024e9ac3 CFRunLoopRunSpecific + 467
    50  CoreFoundation                      0x024e98db CFRunLoopRunInMode + 123
    51  GraphicsServices                    0x02eef9e2 GSEventRunModal + 192
    52  GraphicsServices                    0x02eef809 GSEventRun + 104
    53  UIKit                               0x01035d3b UIApplicationMain + 1225
    54  BitmamaShop                         0x0005980d main + 141
    55  libdyld.dylib                       0x0484970d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Upvotes: 1

Views: 7649

Answers (3)

Prakasha Maravanthe
Prakasha Maravanthe

Reputation: 65

- (UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    UIImage *image = [UIImage imageNamed:imageArray[indexPath.row]];
    cell.imageViewCell.image = [imageArray objectAtIndex:indexPath.row];

    return cell;
}

Upvotes: 0

Gurpreet
Gurpreet

Reputation: 181

You have to create UIImageView outlet in custom cell class & connect it after doing this you write this code :

 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    {
        CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

        cell.imageViewCell.image = [NSString stringWithFormat:@"%@",[imageArray objectAtIndex:indexPath.row]];

        return cell;
    }

Upvotes: -1

Anil Varghese
Anil Varghese

Reputation: 42987

Your imageArray array contains UIImage objects. So you can use it directly. Instead of using

UIImage *image = [UIImage imageNamed:imageArray[indexPath.row]]; 

use

UIImage *image = imageArray[indexPath.row];

Upvotes: 12

Related Questions