Я реализовал UIPageViewController, который я хочу, чтобы иметь возможность прокручивать бесконечно вправо (как в случае с пользователем влево) и иметь возможность прокручивать назад в другом направлении вплоть до начала. Тем не менее, я не хочу, чтобы пользователь мог прокручивать влево (как при проглатывании пользователя вправо) на первой странице, хотя у меня только три страницы, которые зацикливаются, как я могу это сделать?Пользовательский интерфейс просмотра страницы Прокрутка прокрутки не прокручивается назад
Я уже понял, как сделать бесконечную прокрутку с тремя контрольными точками справа (как в пользовательских прокрутках влево), но когда пользователь пытается прокрутить влево (как при нажатии пользователем вправо) это ошибка, и экран белеет?
Может ли кто-нибудь улучшить этот код, чтобы пользователь мог бесконечно прокручивать оба пути, а не только один? и, если это возможно, не позволяет пользователю прокручиваться назад на самой первой панели? Благодарю.
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