Ho un UIViewController che contiene altri ViewControllers. Iniziale ViewController si trova in viewDidLoad:Rotazione di UIPageViewController in 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;
Questo controller contenitore ha implementato automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers per tornare SI. Ha inoltre implementato manualy modifiche rotazione in avanti a ViewControllers non attivi
- (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];
}
}
Quando il bottone menu viene sfruttato faccio la transizione tra 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;
}];
}
Questa transizione funziona bene per i miei ViewControllers "normali" e questi vengono visualizzati correttamente dopo le modifiche di orientamento, anche se non sono attivi. Tuttavia, uno di questi controllori di visione per bambini, denominato SecondCV, ha il UIPageViewController come controller di visualizzazione figlio. Ho UIPageViewControllerDelegate e UIPageViewControllerDataSource insieme a questo SecondCV e in pageViewController: spineLocationForInterfaceOrientation: torno UIPageViewControllerSpineLocationMin per Ritratto e UIPageViewControllerSpineLocationMid per il Paesaggio. La rotazione per questo SecondVC funziona correttamente quando è attiva: ci sono due pagine sul paesaggio e una sulla modalità ritratto visualizzate correttamente. Ma quando questo SecondVC non è attivo, la rotazione non è corretta. Anche se si chiama pageViewController: spineLocationForInterfaceOrientation:, c'è ancora una pagina in modalità verticale e orizzontale. Sto cercando di risolvere questo problema per un po 'di tempo, ma non vedo altre opzioni. Hai qualche idea su come risolvere questo problema?
Grazie.
Anche io sto usando il controller di visualizzazione di pagina, e ho aggiunto VC a un array, ma non conosco il modo corretto di transizione di vari VC, come posso passare ai VC successivi usando la transizione di arricciatura pagina. Potete per favore guidarmi per quello o postare qualche esempio di codice di esso. –
[link] (https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html) Penso che tu possa trovare tutto qui, se non, contattami – DaNY
Non ne ho soluzione ancora, per favore dai un'occhiata alla mia domanda se puoi guidarmi. "Http://stackoverflow.com/questions/13776894/uipageviewcontroller-change-from-two-page-mode-to-one-page-mode-without-changi#comment18942540_13776894" –