iphone - UIScrollView with IUViewController dropping objects -
i have weird issue uiscrollview , added uiviewcontrollers. looks when uiviewcontrollers added uiscrollview paging, uiviewcontroller drops added objects.
in project have storyboard 2 views , connected correctly corresponding code.
i know code doesn't move added uiviewcontroller correct x, in test im adding 1 uiviewcontroller doesnt matter.
this scroll code .h:
#import <uikit/uikit.h> #import "testviewcontroller.h" @interface viewcontroller : uiviewcontroller @property (weak, nonatomic) iboutlet uiscrollview *scrollview; @property (weak, nonatomic) iboutlet uipagecontrol *pagecontrol; @property (strong, nonatomic) nsmutablearray *scrollcontroller; @end
this scroll code .m:
#import "viewcontroller.h" @interface viewcontroller () @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. self.scrollcontroller = [[nsmutablearray alloc] init]; } - (void)viewdidappear:(bool)animated { //just adding 2 controllers testviewcontroller *first = [[testviewcontroller alloc] init]; [self.scrollview addsubview:first.view]; [self.scrollcontroller addobject:first]; self.scrollview.contentsize = cgsizemake(self.scrollview.frame.size.width * self.scrollcontroller.count, self.scrollview.frame.size.height); self.pagecontrol.numberofpages = [self.scrollcontroller count]; } - (void)scrollviewdidscroll:(uiscrollview *)sender { // update page when more 50% of previous/next page visible cgfloat pagewidth = self.scrollview.frame.size.width; int page = floor((self.scrollview.contentoffset.x - pagewidth / 2) / pagewidth) + 1; self.pagecontrol.currentpage = page; } - (void)didreceivememorywarning { [super didreceivememorywarning]; // dispose of resources can recreated. } @end
this viewcontroller code .h:
#import <uikit/uikit.h> @interface testviewcontroller : uiviewcontroller @property (weak, nonatomic) iboutlet uilabel *lblmsg; @end
this viewcontroller code .m:
#import "testviewcontroller.h" @interface testviewcontroller () @end @implementation testviewcontroller - (void)viewdidload { [super viewdidload]; // additional setup after loading view. nslog(@"label: %@", self.lblmsg); } - (void)didreceivememorywarning { [super didreceivememorywarning]; // dispose of resources can recreated. } @end
the output in log is:
label: (null)
anybody able see im doing wrong?
if create viewcontroller using
testviewcontroller *first = [[testviewcontroller alloc] init];
your label (iboutlet) won't linked.
navigate storyboard in xcode, select viewcontroller , assign unique storyboard id ("myidentifier") in identity inspector in utilities on right hand side. try
nsstring *identifier = @"myidentifier"; testviewcontroller *first = [self.storyboard instantiateviewcontrollerwithidentifier:identifier];
have @ documentation:
each view controller object sole owner of view. must not associate same view object multiple view controller objects. exception rule container view controller implementation may add view subview in own view hierarchy. before adding subview, container must first call addchildviewcontroller: method create parent-child relationship between 2 view controller objects.
Comments
Post a Comment