ios - UICollectionViewCell unrecognized selector sent to instance -
i have created uicollectionviewcell looks this
#import "photocell.h" @implementation photocell @synthesize imageview; - (instancetype)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if (self) { self.backgroundcolor = [uicolor clearcolor]; imageview = [[uiimageview alloc] initwithframe:(cgrect){.origin = cgpointmake(4.0f, 4.0f), .size=cgrectinset(frame, 4.0f, 4.0f).size}]; imageview.autoresizingmask = uiviewautoresizingflexiblewidth | uiviewautoresizingflexibleheight; [self.contentview addsubview:imageview]; } return self; } @end i calling 1 of view controllers trying set uicollectionview.. calling class
- (uicollectionviewcell *)collectionview:(uicollectionview *)cv cellforitematindexpath:(nsindexpath *)indexpath; { photocell *cell = (photocell *)[self.photocollectionview dequeuereusablecellwithreuseidentifier:@"cell" forindexpath:indexpath]; nsdictionary *currentphotodict = [imagearray objectatindex:indexpath.row]; uiimage *imageforcollection = [uiimage imagewithdata:[currentphotodict objectforkey:@"dimage"]]; // have no idea pass imag.... cell.imageview.image = imageforcollection; return cell; } the issue is, getting error app falls on in heap.
*** terminating app due uncaught exception 'nsinvalidargumentexception', reason: '-[uicollectionviewcell imageview]: unrecognized selector sent instance 0x16dc1a90' any fixing problem appreciated!
update:
i have created .nib file call aphotocell , have deleted uiview , added uiimageview.. have changed objects custom class photocell , can see iboutlet of uiimageview photocell have hooked up.. still reciving same error... hope makes sense... comments , answers below thought had fix... way continue watching tip , answers.
couple of things..
in photocell class - declare public property:
@property (weak, nonatomic) iboutlet uiimageview *imageview; then in photocell xib (i assume you're creating from?) connect iboutlet created.
i think you're doing wrong in cellforitematindexpath - error shows instance of uicollectionviewcell doesn't respond cell.imageview.image = imageforcollection;
make sure cell identifier same put in storyboard / xib file rewrite cellforitematindexpath method this:
- (uicollectionviewcell *)collectionview:(uicollectionview *)cv cellforitematindexpath:(nsindexpath *)indexpath;{ photocell *cell = [ self.photocollectionview dequeuereusablecellwithreuseidentifier:@"correct cell identifier here" forindexpath:indexpath]; nsdictionary *currentphotodict = [imagearray objectatindex:indexpath.row]; uiimage *imageforcollection = [uiimage imagewithdata:[currentphotodict objectforkey:@"dimage"]]; cell.imageview.image = imageforcollection; return cell; } edit
it seems created subclass of uicollectionviewcell , never created xib file it. since you're not using storyboards this:
in xcode:
create new file - select "user interface" left under 'ios' , select "empty" selection shows you.
after creating xib file - go , delete uiview there. object library on right, uicollectionview cell , drag onto view , drag uiimageview , place in uicollectionview cell.
now select uicollectionviewcell created , set class photocell class. connect iboutlets above. make sure set 'reusable cell' attribute too. important here.
then in viewcontroller loads uicollectionview - add viewdidload
[photocollectionview registernib:[uinib nibwithnibname:@"the xib file name created eg: photocell" bundle:nil] forcellwithreuseidentifier:@"reuse identifier here"]; this should you.
Comments
Post a Comment