ios - In UIPageViewController, when "pageViewController:viewControllerBeforeViewController"get called? -
i try display photos in uipageviewcontroller
. firstly display photos in collection view , tap 1 photo enter page view. when i'm in page view, however, if scroll photo(to right or left), find both pageviewcontroller:viewcontrollerbeforeviewcontroller
, pageviewcontroller:viewcontrollerafterviewcontroller
method called(by calling nslog found it).
should 1 of 2 methods called once? quite confused , have big trouble updating photonumber displaying photo want.
here page view code:
#import "photopageviewcontroller.h" #import "photoviewcontroller.h" @interface photopageviewcontroller () @property (nonatomic)nsinteger previousphotonumber; @end @implementation photopageviewcontroller - (void)viewdidload { [super viewdidload]; self.datasource = self; self.delegate = self; self.numberofphotosincurrentalbum = [photo numberofphotosinalbumwithname:self.albumname inmanagedobjectcontext:self.context]; photoviewcontroller *currentphotoviewcontroller = [self.storyboard instantiateviewcontrollerwithidentifier:@"photocontentviewcontroller"]; currentphotoviewcontroller.photonumber = self.currentphotonumber; currentphotoviewcontroller.albumname = self.albumname; currentphotoviewcontroller.context = self.context; currentphotoviewcontroller.ppvc = self; currentphotoviewcontroller.numberofphotosincurrentalbum =self.numberofphotosincurrentalbum; [self setviewcontrollers:@[currentphotoviewcontroller] direction:uipageviewcontrollernavigationdirectionforward animated:no completion:null]; } #pragma mark - page view controller datasource - (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerbeforeviewcontroller:(uiviewcontroller *)viewcontroller { if (self.currentphotonumber > 0) { nslog(@"in before section: current photo %lu", self.currentphotonumber); photoviewcontroller *photobeforecurrentphoto = [self.storyboard instantiateviewcontrollerwithidentifier:@"photocontentviewcontroller"]; photobeforecurrentphoto.photonumber = self.currentphotonumber - 1; photobeforecurrentphoto.albumname = self.albumname; photobeforecurrentphoto.context = self.context; photobeforecurrentphoto.ppvc = self; self.previousphotonumber = self.currentphotonumber; self.currentphotonumber--; return photobeforecurrentphoto; } return nil; } - (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerafterviewcontroller:(uiviewcontroller *)viewcontroller { if (self.currentphotonumber < self.numberofphotosincurrentalbum - 1) { nslog(@"in after section: current photo %lu", self.currentphotonumber); photoviewcontroller *photoaftercurrentphoto = [self.storyboard instantiateviewcontrollerwithidentifier:@"photocontentviewcontroller"]; photoaftercurrentphoto.photonumber = self.currentphotonumber + 1; photoaftercurrentphoto.albumname = self.albumname; photoaftercurrentphoto.context = self.context; photoaftercurrentphoto.ppvc = self; self.previousphotonumber = self.currentphotonumber; self.currentphotonumber++; return photoaftercurrentphoto; } return nil; }
photoviewcontroller
view controller display photo.
can give me advice usage of uipageviewcontroller
?
thanks in advance!
uipageviewcontroller
uses these bellow method getting , front viewcontroller.
- (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerbeforeviewcontroller:(uiviewcontroller *)viewcontroller; - (uiviewcontroller *)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller viewcontrollerafterviewcontroller:(uiviewcontroller *)viewcontroller;
though weird yes known issue. every time calls before , after method vc. there no next vc returns nil , if there no previous vc datasourcedelegate
return nil, otherwise return index of vc.
in uipageviewcontrollerdelegate
, there function named :
- (void)pageviewcontroller:(uipageviewcontroller *)pageviewcontroller willtransitiontoviewcontrollers:(nsarray *)pendingviewcontrollers;
look @ might current or next/previous viewcontroller pendingviewcontrollers
array.
hope helps.. :)
Comments
Post a Comment