Ротация UIPageViewController в Container View Controller

У меня есть UIViewController, который содержит другие ViewController'ы. Начальный ViewController установлен в viewDidLoad :

FirstViewController *first = [FirstViewController alloc] init];
first.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
first.view.frame = m_content.frame;

[self addChildViewController:first];
[m_content.view addSubview:first.view];
[first didMoveToParentViewController:self];
m_activeViewController = first;

. Этот контроллер контейнера реализовал автоматически ForwardAppearanceAndRotationMethodsToChildViewControllers для возврата YES. Он также реализовал ручное вращение вперед для неактивных ViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    for(UIViewController *vc in m_viewControllers)
    {
        if(vc != [m_activeViewController]
            [vc willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    }
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    for(UIViewController *vc in m_viewControllers)
    {
        if(vc != [m_activeViewController]
            [vc didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    }
}

При нажатии кнопки меню я выполняю переход между ViewControllers.

- (void)onMenuItemTapped:(id)sender
{
    UIViewController *vc = [m_viewControllers objectAtIndex:sender.tag];

    vc.view.frame = m_content.frame;
    [self addChildViewController:vc];
    [self transitionFromViewController:m_activeViewController toViewController:vc duration:0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished) {
    [vc didMoveToParentViewController:self];
    [m_activeViewController removeFromParentViewController];
    m_activeViewController = vc;
    }];
}

Этот переход отлично работает для моих «обычных» ViewController, и они правильно отображаются после изменения ориентации, даже если они не активны. Однако один из этих контроллеров дочернего представления, называемый SecondCV, имеет UIPageViewController в качестве контроллера дочернего представления. У меня есть UIPageViewControllerDelegate и UIPageViewControllerDataSource для этого SecondCV, а в pageViewController:spineLocationForInterfaceOrientation:я возвращаю UIPageViewControllerSpineLocationMin для книжной ориентации и UIPageViewControllerSpineLocationMid для альбомной ориентации. Поворот для этого SecondVC работает правильно, когда он активен -две страницы в альбомном режиме и одна в портретном режиме отображаются правильно. Но когда этот SecondVC не активен, вращение неправильное. Даже если вызывается pageViewController:spineLocationForInterfaceOrientation :, в портретном и альбомном режимах остается одна страница. Я пытаюсь исправить это в течение некоторого времени, но я не вижу других вариантов. У вас есть идеи, как это исправить?

Спасибо.

6
задан DaNY 13 April 2012 в 08:16
поделиться