Je travaille sur une application (la première), qui est essentiellement une application TabBar. Pour être plus précis, il y a: - un contrôleur de vue de connexion - un contrôleur de barre d'onglets (une fois la connexion établie) - un contrôleur de vue paysage utilisé lorsque le premier élément du TabBar passe de Portrait à Paysage. Donc, quand je suis dans le premier onglet, je dois pouvoir passer en mode paysage pour afficher d'autres données. Dans mon contrôleur de barre d'onglets, je l'ai mis en œuvre ces méthodes:Iphone: Impossible de revenir de ma vue paysage à une vue portrait
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0)
return YES;
return NO;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
// Get AppDelegate
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
// Remove TabBarView and add graph Landscape View
[self.view removeFromSuperview];
[delegate setSubViewLandscapeViewController];
}
}
Dans le délégué, je l'ai mis en œuvre le setSubViewLandscapeViewController et setSubViewTabBarController:
- (void)setSubViewTabBarViewController {
[window addSubview:[tabBarController view]];
}
- (void)setSubViewGraphLandscapeViewController {
[window addSubview:[landscapeViewController view]];
}
Je veux que le landscapeViewController pour afficher uniquement en mode paysage, J'ai alors (dans mon landscapeViewController):
- (void)viewWillAppear:(BOOL)animated {
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
NSLog(@"willRotateToInterfaceOrientation");
}
Une partie de cela fonctionne très bien, je veux dire le passage du mode portrait au paysage est ok (quand je suis dans le premier onglet), le tabbarcontroller est retiré du SuperView et la vue paysage est ajoutée en tant que sous-vue à la place. La chose est ... Je ne sais pas comment revenir en mode portrait (et ensuite charger le contrôleur précédent, le tabBar en utilisant le setSubViewTabBarViewController de mon délégué). Il semble qu'aucun des paramètres willRotateToOrientation, willRotateFromOrientation, .. ne se déclenche lorsque je déplace l'appareil de la vue paysage ...
En résumé, lorsque je suis en mode paysage, je ne sais pas quoi faire pour revenir en arrière. à la vue de tabbar ... Je suis coincé dans la vue de paysage une fois que je suis dans celui-ci.
Merci beaucoup pour votre aide,
Luc
Bonjour, bien en fait, je pense que je n'étais pas vraiment clair :( J'avais besoin de charger une vue de paysage lorsque je passais du mode portrait au mode paysage, j'ai réussi à le faire avec les méthodes shouldAutorotateToInterfaceOrientation et willRotateToInterfaceOrientation, le truc c'est que maintenant je suis en mode paysage je ne sais pas comment gérer la rotation du mode paysage au mode portrait ... Comme j'ai déclaré l'UIView en mode paysage, y a-t-il une méthode déclenchée dans ce cas? – Luc