2010-12-03 7 views
6

Ich versuche eine App zu machen, wo jeder View-Controller (.h/.m) 2 NIB-Dateien hat ... eine für Porträt, eine für Landschaft. Ist dies der "Standard", um die Orientierung zu unterstützen, oder muss ich die Orientierungsansicht programmatisch manuell einrichten? Das Problem, dem ich gegenüberstehe, ist, dass, wenn ein Benutzer die Ausrichtung umkehrt, alle Ansichten zurückgesetzt werden (der Benutzer muss also die Eingabe von Textfeldern/Ansichten erneut eingeben).Iphone Orientierung und 2 Nib Dateien

Hier ist meine Orientierung Methode:

- (void) changeTheViewToPortrait:(BOOL)portrait andDuration:(NSTimeInterval)duration{ 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:duration]; 

if(portrait) { 
    [[NSBundle mainBundle] loadNibNamed:@"myview-portrait" owner:self options:nil]; 
    [self setupLayout]; 
} else{ 
    [[NSBundle mainBundle] loadNibNamed:@"myview-landscape" owner:self options:nil]; 
    [self setupLayout]; 
} 

[UIView commitAnimations]; 

}

+0

Hallo E-Man ist diese Methode gültig? Führt es Probleme während der App-Überprüfung durch Apple? Ich benutze die gleiche Weise, wie Sie es getan haben, wird es irgendein Problem geben? –

Antwort

7

Apple in dem Abschnitt eine Reihe unterschiedlicher Vorschläge hat „Verwalten eines View-Controller die Schnittstelle Orientierung Titel in ihren View-Controller-Programmierhandbuch mehrere Orientierungen für die Unterstützung ". Vielleicht möchten Sie diesen Abschnitt lesen, um zu sehen, ob einer ihrer Vorschläge Ihren Bedürfnissen besser entspricht.

Das gesagt, ich habe die Strategie verwendet, die Sie oben in einer Anwendung vorgestellt haben, und es schien ziemlich gut zu funktionieren.

Um Ihr Problem zu lösen, dass die Ansichten 'zurückgesetzt' werden, würde ich vorschlagen, dass Sie einen Verweis auf die Daten behalten, die vom Benutzer eingegeben werden, während sie von Kontrolle zu Kontrolle wechseln. Wenn sich die Ausrichtung ändert, können Sie die Steuerelemente erneut füllen, damit der Fortschritt des Benutzers nicht verloren geht.

+1

Ich wünschte, es gäbe einen saubereren Weg ... :( – Exegesis

+0

Ist diese Methode gültig? Wird dies Probleme bei der App-Überprüfung durch Apple verursachen? Ich benutze die gleiche Methode wie diese, wird es ein Problem geben? –

+1

Warum nicht Es ist gültig? Die verwendeten Methoden sind öffentliche APIs. – TigerCoding