J'ai une hiérarchie de vue assez simple dans mon application iPad.Envoyer un message à une sous-vue après autorotate
Fenêtre -> RootView -> TableView/DetailView
TableView et DetailView sont frères et sœurs ajoutés en tant que sous-vues (comme par une solution à une question précédente). Au lancement, TableView est devant. Lorsque vous sélectionnez une cellule, la méthode dans le délégué de l'application est appelée, ce qui permet de l'échanger en plaçant DetailView au premier plan. Un bouton de fermeture dans DetailView fait l'inverse.
Fonctionne très bien.
Mais ... DetailView contient un UIScrollView, dessiné dans le .xib Quand DetailView vient à l'avant, j'ai une méthode qui reçoit les détails du contenu de la cellule dont la sélection a déclenché le changement. Cela remplit la vue détaillée avec le contenu de l'étiquette et une image. Les étiquettes sont de simples paramètres pour IBOutlets pour les étiquettes dans le fichier .xib L'image est dimensionnée à la hauteur de l'UIScrollView, en maintenant le rapport d'aspect. Ceci est fait par programme, en l'ajoutant à un UIImageView qui est ajouté à UIScrollView.
Le comportement que j'ai est bon pour Portrait. Lorsqu'il passe en mode Paysage, je souhaite redimensionner l'image pour qu'elle corresponde à la largeur de l'UIImageView englobant (et par la suite à l'UIScrollView englobant). J'ai un grand code pour redimensionner réellement l'image (avec la permission d'un ajout de catégorie à UIImage de [texte du lien] [1]
PROBLÈME ... Seul le RootViewController répond aux appels à didRotateToInterfaceOrientation. je dois envoyer un message à une méthode sur le contrôleur DetailViews en lui disant de redimensionner l'image puis redessiner le UIImageView associé Référencer le contrôleur d'une sous-vue semble comme il devrait être simple et peut-être qu'il me manque une réponse facile J'ai essayé à utiliser:
[[self.view.subviews objectAtIndex:1] didRotateFromInterfaceOrientation:fromInterfaceOrientation];
etMais ils retournent tous deux la vue PAS le contrôleur de vues, et se mettent donc en colère contre les sélecteurs lorsque je tente de l'exécuter.
Quelqu'un peut-il m'indiquer le bon chemin?