J'ai cette application iPad avec différents NIB et vues. Chaque vue possède deux NIB, une pour l'orientation du potrait et une pour le paysage, donc je recherche une méthode pour basculer par programme NIB pour un UIViewController donné.Meilleure façon de modifier le NIB de la vue UIViewController par programmation
En ce moment, j'ai cette fonction que j'utilise dans la méthode willRotateToInterfaceOrientation de chaque contrôleur:
void UIHandleRotation(UIViewController *controller, NSString *nibName, UIInterfaceOrientation orientation, BOOL transform){
double angle = 0.0;
if(orientation == UIInterfaceOrientationPortrait) {
angle = PI * 2 /* 360° */;
}
else if(orientation == UIInterfaceOrientationLandscapeLeft){
angle = PI + PI/2 /* 270 ° */;
// Each landscape nib is [nib-name]L
nibName = [NSString stringWithFormat:@"%@L", nibName];
}
[[NSBundle mainBundle] loadNibNamed:nibName owner:controller options:nil];
if(transform) {
controller.view.transform = CGAffineTransformMakeRotation(angle);
}
}
Mais il me donne un comportement étrange (contrôle ui position foiré, les sorties ne sont pas associés comme dans l'interface constructeur, et ainsi de suite).
Est-ce que je fais quelque chose de mal ou est-ce qu'il y a juste une meilleure façon de l'implémenter? Merci
NOTE: Je ne suis pas en utilisant un contrôleur de navigation, donc je ne peux pas utiliser cette solution Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?
Voir la note que je viens d'ajouter. –
Vous pouvez utiliser un contrôleur de navigation et c'est la manière la plus simple de le faire. Vous n'avez pas à exposer le contrôleur de navigation dans l'interface. L'exemple auquel je suis lié ne le fait pas. L'utilisateur ne peut pas dire qu'un contrôleur de navigation est en cours d'utilisation. – TechZen