PageViewController с ViewControllers

Я не смог найти рабочий пример контроллера PageViewController с View Controllers в качестве страниц.

Мне просто нужны два контроллера горизонтального вида: viewcontroller1 и viewcontroller2.

Вот мой viewDidLoad:

- (void)viewDidLoad {
 [super viewDidLoad];
 self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationVertical options:nil];

 self.pageController.dataSource = self;
 [[self.pageController view] setFrame:[[self view] bounds]];

 storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil];
 controller1 = [storyboard instantiateViewControllerWithIdentifier:@"first"];
 controller2 = [storyboard instantiateViewControllerWithIdentifier:@"second"];

 viewControllers = [NSArray arrayWithObjects:controller1, nil];

 [self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

 [self addChildViewController:self.pageController];
 [[self view] addSubview:[self.pageController view]];
 [self.pageController didMoveToParentViewController:self];
}


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
 return controller1;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
 return controller2;
}

Проблема в том, что после прокрутки второго представления она исчезает. Некоторая помощь в понимании PageViewController была бы очень приятной.

заранее спасибо

1 ответ

Измените методы делегирования, подобные этому, и он должен работать правильно:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
 if (self.pageController.viewControllers[0] == self.controller2)
 return self.controller1;
 return nil;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
 if (self.pageController.viewControllers[0] == self.controller1)
 return self.controller2;
 return nil;
}

licensed under cc by-sa 3.0 with attribution.