2010-12-03 31 views
6

J'essaye de faire une application où chaque contrôleur de vue (.h/.m) a 2 fichiers NIB ... un pour le portrait, un pour le paysage. Est-ce la manière "standard" de supporter l'orientation ou dois-je configurer manuellement la vue d'orientation par programme? Le problème auquel je suis confronté est que lorsqu'un utilisateur retourne l'orientation, toutes les vues sont réinitialisées (l'utilisateur doit donc entrer de nouveau les champs de texte/les entrées).Orientation Iphone et 2 fichiers Nib

Voici ma méthode d'orientation:

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

Bonjour E-man est-ce que cette méthode est valide? Est-ce que cela pose un problème pendant l'examen de l'application par Apple? J'utilise la même manière que vous avez fait il y aura un problème? –

Répondre

7

Apple a un certain nombre de suggestions pour soutenir les multiples orientations dans leur View Controller Guide de programmation dans la section intitulée « Gestion Interface d'un View Controller Orientation ". Vous pourriez vouloir lire cette section pour voir si l'une de leurs suggestions serait mieux adaptée à vos besoins. Cela étant dit, j'ai utilisé la stratégie que vous avez présentée ci-dessus dans une application et cela a semblé fonctionner plutôt bien.

Pour résoudre votre problème de réinitialisation des vues, je vous suggère de conserver une référence aux données saisies par l'utilisateur lors du passage de contrôle à contrôle. Ensuite, lorsque votre orientation change, vous pouvez repeupler les contrôles afin que la «progression» de l'utilisateur ne soit pas perdue.

+1

Je souhaite qu'il y avait un moyen plus propre ... :( – Exegesis

+0

Est-ce que cette méthode est valide? Est-ce que cela causera tout problème alors que l'examen de l'application par apple? Je utilise la même façon, y aura-t-il un problème? –

+1

Les méthodes utilisées sont des API publiques. – TigerCoding