2010-08-18 12 views

risposta

1

Si potrebbe voi qualcosa di simile, (non ho a portata di mano in modo da Xcode questo codice potrebbe non essere del tutto accurato)

-(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

Ma poi la vista verticale orientata sarà ancora in pila, non è vero? Quindi il pulsante indietro punterà alla cosa sbagliata. –

+0

Un buon punto, è possibile nascondere la barra di navigazione quando le viste ruotano o hanno già creato la vista e sbiadirla e sbiadire l'altra vista quando avviene la rotazione. – octermircty

1

Questo è il modo corretto, credo. Lo sto usando le mie applicazioni e funziona perfettamente

  1. innesca ruoterà, non deve ruotare (attese fino a quando la rotazione Anim sta per iniziare)
  2. utilizza la convenzione di denominazione di Apple per i file orizzontale/verticale (Default.png è default-landscape.png se si vuole Apple per auto-caricare una versione paesaggio)
  3. ricarica il nuovo NIB
  4. che resetta il self.view - questo verrà automaticamente aggiornare la visualizzazione
  5. e poi chiama viewDidLoad (Apple NON chiamerà questo per te, se ricarichi manualmente un NIB)

(NB stackoverflow.com richiede questa frase qui - c'è un bug nel codice di formattazione)

-(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]; 
    } 
} 
Problemi correlati