how 1 ensure viewwillappear: , viewdidappear: (and other view transition methods) called on uipageviewcontroller's child viewcontrollers?
in case, view transition methods adequately called on except firstviewcontroller uipageviewcontroller opens to. on firstviewcontroller, viewdidappear: , viewwillappear: methods called before uipageviewcontroller's view transition methods. , 1 starts scrolling, viewwillappear: , viewdidappear: methods called 1 expect new view controllers.
here structure: have bossviewcontroller contains organizerviewcontroller (a couple different organizers, actually, irrelevant). organizerviewcontroller contains uipageviewcontroller, contains series of customviewcontrollers. code adequately calls child view transition methods per apple (https://developer.apple.com/library/ios/featuredarticles/viewcontrollerpgforiphoneos/implementingacontainerviewcontroller.html) interactions between bossviewcontroller , organizerviewcontroller (fully functional, so). problem lies somewhere between organizerviewcontroller, it's child uipageviewcontroller, , it's first child custompageviewcontroller.
i have tried calling beginappearancetransition: , endappearancetransition: within uipageviewcontroller's viewwillappear: , viewdidappear: - resulted in 'unbalanced calls' error log console.
here uipageviewcontroller set code, of in organizerviewcontroller:
- (void)configurepvc { nsdictionary *key = @{uipageviewcontrolleroptioninterpagespacingkey : @([uiscreen mainscreen].bounds.size.width * 0.5)}; _pvc = [[avscustompageviewcontroller alloc] initwithtransitionstyle:uipageviewcontrollertransitionstylescroll navigationorientation:uipageviewcontrollernavigationorientationhorizontal options:key]; self.pvc.delegate = self; self.pvc.datasource = self; _pvcarray = [[nsmutablearray alloc] init]; customviewcontroller *daily = (customviewcontroller *)[self viewcontrolleratindex:6]; self.index = 6; [self.pvcarray addobject:daily]; [self.pvc setviewcontrollers:self.pvcarray direction:uipageviewcontrollernavigationdirectionforward animated:yes completion:nil]; [self addchildviewcontroller:self.pvc]; [self.dailycontainerview addsubview:self.pvc.view]; self.pvc.view.frame = self.dailycontainerview.bounds; [self.pvc didmovetoparentviewcontroller:self]; } - (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerbeforeviewcontroller:(uiviewcontroller *)viewcontroller { nsuinteger index = [(customviewcontroller *)viewcontroller index]; if (index == 0) { return nil; } index--; return [self viewcontrolleratindex:index]; } - (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerafterviewcontroller:(uiviewcontroller *)viewcontroller { nsuinteger index = [(customviewcontroller *)viewcontroller index]; if (index == 6) { return nil; } index++; return [self viewcontrolleratindex:index]; } - (uiviewcontroller *)viewcontrolleratindex:(nsuinteger)index { customviewcontroller *viewcontroller = [[customviewcontroller alloc] init]; viewcontroller.index = index; return viewcontroller; }
Comments
Post a Comment