Tengo un UIViewController que contiene otros ViewControllers. ViewController inicial se establece en viewDidLoad:Rotación de UIPageViewController en Container View Controller
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;
Este controlador de contenedores ha implementado automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers para volver SÍ. También ha puesto en marcha manualy cambios rotación hacia adelante a ViewControllers no activos
- (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];
}
}
Cuando se toca el botón de menú que haga la transición entre 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;
}];
}
Esta transición funciona bien para mis ViewControllers "normales" y que se muestran correctamente después de los cambios de orientación, incluso si no están activos. Sin embargo, uno de estos Controladores de vista infantil, llamado SecondCV, tiene UIPageViewController como Controlador de vista infantil. Tengo UIPageViewControllerDelegate y UIPageViewControllerDataSource configurado para esta SecondCV y en pageViewController: spineLocationForInterfaceOrientation: vuelvo UIPageViewControllerSpineLocationMin para el retrato y UIPageViewControllerSpineLocationMid para el paisaje. La rotación de este SecondVC funciona correctamente cuando está activo: hay dos páginas en el paisaje y una en el modo vertical que se muestra correctamente. Pero cuando este SecondVC no está activo, la rotación es incorrecta. Incluso si se llama a pageViewController: spineLocationForInterfaceOrientation:, todavía hay una página en el modo vertical y horizontal. Estoy tratando de arreglar esto por un tiempo, pero no veo otras opciones. ¿Tienes alguna idea de cómo solucionar esto?
Gracias.
También estoy usando el controlador de vista de página, y he agregado VC a una matriz, pero no conozco la forma adecuada de transición de varios VC, ¿cómo puedo pasar al siguiente VC usando la transición de curvatura de página? ¿Puedes guiarme por eso o publicar un código de muestra de eso? –
[link] (https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html) Creo que puede encontrar todo lo que está por aquí, si no, contácteme – DaNY
No tengo ninguna solución aún, por favor eche un vistazo a mi pregunta si puede guiarme. "http://stackoverflow.com/questions/13776894/uipageviewcontroller-change-from-two-page-mode-to-one-page-mode-without-changi#comment18942540_13776894" –