2010-06-30 3 views
1

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

Répondre

0

Eh bien, j'ai réussi à obtenir une solution à ce problème. En fait, en passant du mode portrait au mode paysage, j'ai retiré le tabbarcontroller de la sous-vue de la fenêtre et j'ai ajouté le paysageviewcontroller à la place. Il semble que ce n'était pas la bonne chose à faire. Au lieu de cela, j'ajoute le paysageViewController comme sous-vue du contrôleur de tabulation et le supprime lorsque je passe de l'affichage paysage à l'affichage portrait. Il me reste cependant un problème avec la position y de la vue du paysage qui semble changements quand je fais plusieurs rotation decive de suite .... Cordialement, Luc

0

Regardez le graphique circulaire de CPTestApp-iPhone dans le dossier exemples. Il gère la rotation en implémentant -(void)didRotateFromInterfaceOrientation: et en redimensionnant le graphique après une rotation.

+0

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

Questions connexes