0
我已经实现了一个UIPageViewController,我希望能够无限滚动到右侧(如用户向左滑动),并且能够向另一个方向向后滚动一路开始。不过,我不希望用户能够在第一页上向左滚动(如用户向右滑动),即使我只有三页循环,我该怎么做?UI页面视图控制器滚动不会向后滚动
我已经想出了如何使右侧有三个视图控制器的无限滚动(如用户向左滚动),但是当用户尝试向左滚动时(如用户向右滑动)它错了,屏幕变白了?
任何人都可以改进这个代码,这样用户可以无限滚动双向,而不仅仅是一个?并且如果可能的话,防止用户在第一个面板上向后滚动?谢谢。
PageViewController.h
#import <UIKit/UIKit.h>
@interface PageViewController : UIPageViewController
<UIPageViewControllerDelegate, UIPageViewControllerDataSource>
@end
PageViewController.m
#import "PageViewController.h"
@interface PageViewController()
@end
@implementation PageViewController
{
NSArray *myViewControllers;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.delegate = self;
self.dataSource = self;
UIViewController *p1 = [self.storyboard
instantiateViewControllerWithIdentifier:@"ContentViewController1"];
UIViewController *p2 = [self.storyboard
instantiateViewControllerWithIdentifier:@"ContentViewController2"];
UIViewController *p3 = [self.storyboard
instantiateViewControllerWithIdentifier:@"ContentViewController3"];
myViewControllers = @[p1,p2,p3];
[self setViewControllers:@[p1]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO completion:nil];
NSLog(@"loaded!");
}
-(UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
return myViewControllers[index];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];
--currentIndex;
currentIndex = currentIndex % (myViewControllers.count);
return [myViewControllers objectAtIndex:currentIndex];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];
++currentIndex;
currentIndex = currentIndex % (myViewControllers.count);
return [myViewControllers objectAtIndex:currentIndex];
}
-(NSInteger)presentationCountForPageViewController:
(UIPageViewController *)pageViewController
{
return myViewControllers.count;
}
-(NSInteger)presentationIndexForPageViewController:
(UIPageViewController *)pageViewController
{
return 0;
}
@end