2010-08-18 3 views

Répondre

1

Vous pourriez vous quelque chose comme ça, (je ne Xcode à portée de main si ce code pourrait ne pas être tout à fait exact)

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
if((interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)){ 
WhatYourNewViewClassISCAlled* newView = [[WhatYourNewViewClassISCAlled alloc] initWithNibName:@"NIBNAME" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:newView animated:YES]; 
} 
+0

Mais la vue en orientation portrait sera toujours sur la pile, non? Donc, le bouton retour pointera vers la mauvaise chose. –

+0

Bon point, vous pouvez masquer la barre de navigation lorsque les vues sont pivotées ou que la vue a déjà été créée et l'afficher en fondu et faire disparaître l'autre vue lorsque la rotation se produit. – octermircty

1

Ceci est la bonne façon, je crois. Je l'utilise dans mes applications et il fonctionne parfaitement

  1. déclenche sur TOURNE, ne doit cabrer (temps d'attente jusqu'à ce que la rotation anim est sur le point de commencer)
  2. utilise la convention de nommage d'Apple pour les fichiers paysage/portrait (Default.png est par défaut-landscape.png si vous voulez Apple pour auto-charger une version paysage)
  3. rechargements la nouvelle NIB
  4. qui remet à zéro le self.view - cette fenêtre mettre à jour l'affichage
  5. puis il appelle viewDidLoad (Apple ne l'appellera PAS pour vous, si vous rechargez manuellement un NIB)

(NB stackoverflow.com exige cette phrase ici - il y a un bogue dans le code formatter)

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) 
    { 
     [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])] owner:self options:nil]; 

     [self viewDidLoad]; 
    } 
    else 
    { 
     [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", NSStringFromClass([self class])] owner:self options:nil]; 

     [self viewDidLoad]; 
    } 
} 
Questions connexes