2013-07-12 4 views
1

Мне не удалось найти рабочий пример контроллера PageViewController с контроллерами представления в виде страниц.PageViewController with ViewControllers

Мне просто нужны два контроллера горизонтального обзора: 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 была бы очень приятной.

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

ответ

5

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

- (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; 
} 
Смежные вопросы