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