ios - Trouble setting UIImageView.image on custom class from another class -
i have custom class subclass of uiview manages uiscrollview fits size of view , contains uiimageview fills scrollview.
i having trouble setting imageview.image of custom class:
here's class
#import "backgroundpickerview.h" @implementation backgroundpickerview @synthesize scrollview; @synthesize imageview; @synthesize actionbutton; -(id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; return self; } -(void)layoutsubviews { [super layoutsubviews]; //[[nsnotificationcenter defaultcenter] addobserver:self // selector:@selector(changeimage) // name:@"imagechangenotification" // object:nil]; //here's add custom subviews scrollview = [[uiscrollview alloc] init]; imageview = [[uiimageview alloc] init]; actionbutton = [[uibutton alloc] init]; [scrollview setframe:cgrectmake(0, 0, 321, 115)]; [imageview setframe:cgrectmake(0, 0, 321, 115)]; [actionbutton setframe:cgrectmake(0, 0, 320, 115)]; scrollview.scrollenabled = yes; scrollview.minimumzoomscale = 1.0; scrollview.maximumzoomscale = 6.0; scrollview.contentsize = cgsizemake(300, 200);//imageview.image.size; [scrollview addsubview:imageview]; [self addsubview:scrollview]; } -(void)storeimage:(uiimage *)image { self.imageview.image = image; } -(void)changeimage { [self.imageview setimage:[uiimage imagenamed:@"random.png"]]; } from other class b receive image have tried using nsnotification , simple setter method try setting imageview property of class object, cannot seem set imageview.image. have tried using
instance.imageview.image = myimagetoset
//setter [instance storeimage:myimagetoset]; in class b having no success
first of all, initialisation of subviews in layoutsubviews not best way, better u initialise them in init method, because layoutsubviews may call multiple times layout subviews, if u place initialisation code in layoutsubviews there might may subviews. in layoutsubviews u set frame of subviews.
and u can below,
#import "backgroundpickerview.h" @implementation customviewa //edit change below - (id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if(self) { [self commoninit]; } return self; } - (void)awakefromnib { [self commoninit]; } - (void)commoninit { _scrollview = [[uiscrollview alloc] init]; _imageview = [[uiimageview alloc] init]; _actionbutton = [[uibutton alloc] init]; _scrollview.scrollenabled = yes; _scrollview.minimumzoomscale = 1.0; _scrollview.maximumzoomscale = 6.0; [_scrollview addsubview:_imageview]; [self addsubview:_scrollview]; } - (void)layoutsubviews { [super layoutsubviews]; [_scrollview setframe:cgrectmake(0, 0, 321, 115)]; [_imageview setframe:cgrectmake(0, 0, 321, 115)]; [_actionbutton setframe:cgrectmake(0, 0, 320, 115)]; _scrollview.contentsize = cgsizemake(300, 200); } -(void)storeimage:(uiimage *)image { self.imageview.image = image; } -(void)changeimage { [self.imageview setimage:[uiimage imagenamed:@"random.png"]]; } synthesise optional , in backgroundpickerview.h file below
@interface backgroundpickerview : uiview @property (nonatomic, strong) uiscrollview *scrollview; @property (nonatomic, strong) uiimageview *imageview; @property (nonatomic, strong) uibutton *actionbutton; -(void)storeimage:(uiimage *)image; -(void)changeimage; for image u check it should work, check image present or not,
edit image, in controller example,
- (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. _viewa = [[backgroundpickerview alloc] initwithframe:self.view.bounds]; [self.view addsubview:_viewa]; } //for testing - (void)viewdidappear:(bool)animated { [super viewdidappear:animated]; [_viewa storeimage:[uiimage imagenamed:@"6.png"]]; //hear }
Comments
Post a Comment