pageViewController 使用的时候当在滚动完成方法再次调用下面的赋值方法时会出现崩溃问题,因此要谨慎使用
[_pageViewController setViewControllers:vcList direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil];
/**
* //翻页动画执行完成后回调的方法 此代理方法仅在手指drag时,才会调用.代码设置,不会调用.
*
* @param pageViewController 当前UIPageViewController
* @param finished 动画是否结束
* @param previousViewControllers 拖动开始前的vc.如果从控制器src拖动到控制器des,则为src;如果没有成功拖动到des,即拖动了一点点,又返回到src,也为src
* @param completed 是否完成拖动到控制器des,如果拖动到des,为YES;如果没有拖动到des,为NO
* 利用finished与completed参数,可控制代码执行的时机
*/
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed{
if (finished) {
if (completed) {
NSInteger index = [self.pageContentArray indexOfObject:_memberPageViewController];
[self changeLineHidden:index];
//修改导航条
}else{
NSInteger index = [self.pageContentArray indexOfObject:previousViewControllers[0]];
[self changeLineHidden:index];
}
}
}
//翻页视图控制器将要翻页时执行的方法
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers{
_memberPageViewController = (LDAttentionnewpageVC *)pendingViewControllers[0];
}
#pragma mark 返回上一个ViewController对象
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(LDAttentionnewpageVC *)viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
#pragma mark 返回下一个ViewController对象
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(LDAttentionnewpageVC *)viewController];
if (index == NSNotFound) {
return nil;
}
index++;
if (index == [self.pageContentArray count]) {
return nil;
}
return [self viewControllerAtIndex:index];
}
网友评论