2010-12-03 19 views
0

Je suis l'implémentation d'un TabBarViewController personnalisé, qui, en dehors de la conception devrait avoir le même comportement.problèmes de rotation, la gestion des sous-vues dans un TabBarController personnalisé

Je gère mon subViewControllers dans un tableau, l'initialisation vues avec le chargement paresseux comme décrit dans « Début Iphone développement » Chapitre 6, que je fais en remplissant mon tableau avec autant de NSNull objets sous forme d'onglets que j'ai et en les remplaçant par fraîchement initialisé viewControllers si nécessaire. De cette façon, je peux suivre le bon ordre des vues et les associer aux bons onglets (la première place dans le tableau est réservée à la première vue, etc.).

Lors de la commutation de vues, la vue actuelle est supprimée avec [currentViewController.view removeFromSuperview]; et une nouvelle est ajoutée avec [self.view addSubview:newViewController.view];. La vue maintenant ancienne est conservée dans le tableau pour une utilisation future. Une difficulté se présente lors de la rotation du périphérique, car (je pense) les viewControllers de ma baie qui ne sont pas ajoutés à la vue d'ensemble à ce moment avec addSubview ne sont pas pivotés, ce qui est logique, je suppose.

Le résultat est que, après rotation, par ex. En mode paysage, l'utilisateur bascule vers une vue qu'il a déjà vue auparavant, ce qui est dû à cela déjà initialisé, la vue lui est présentée toujours en mode portrait.

Mes questions sont alors:

1) Dois-je tourner mes subviews non ajoutés manuellement et si oui, comment est-ce fait plus facile?

2) Comment le TabBarController normal gère-t-il ses contrôleurs, en d'autres termes, est-ce que je le fais correctement?

Répondre

0

Pourquoi ne pas vous essayez de changer le cadre de votre point de vue de la propriété de vue du contrôleur pour le mode courant que l'utilisateur est en (potrait ou paysage)

Donc shouldAutorotateToInterfaceOrientation simplement changer yourviewcontroller.view.frame = CGRectMake (x , y, largeur, hauteur) et peut-être que vous aurez vos vues tournées !!

J'espère que cela aide