Puisque c'est la réponse acceptée depuis longtemps, je pense que je dois la rectifier avec une meilleure réponse.
Quelques commentaires sur la nécessité :
- Votre vue ne doit pas avoir besoin d'accéder directement au contrôleur de vue.
- La vue doit au contraire être indépendante du contrôleur de vue, et être capable de travailler dans des contextes différents.
- Si vous avez besoin que la vue s'interface d'une manière ou d'une autre avec le contrôleur de vue, la méthode recommandée, et ce que fait Apple dans Cocoa, est d'utiliser le modèle de délégué.
Voici un exemple de sa mise en œuvre :
@protocol MyViewDelegate < NSObject >
- (void)viewActionHappened;
@end
@interface MyView : UIView
@property (nonatomic, assign) MyViewDelegate delegate;
@end
@interface MyViewController < MyViewDelegate >
@end
La vue s'interface avec son délégué (comme UITableView
par exemple) et il importe peu qu'elle soit mise en œuvre dans le contrôleur de vue ou dans toute autre classe que vous finissez par utiliser.
Ma réponse initiale suit : Je ne recommande pas cela, ni le reste des réponses où l'accès direct au contrôleur de vue est réalisé
Il n'y a pas de moyen intégré de le faire. Bien que vous puissiez le contourner en ajoutant un IBOutlet
sur le UIView
et de les connecter dans Interface Builder, ce n'est pas recommandé. La vue ne doit pas connaître le contrôleur de vue. Au lieu de cela, vous devriez faire comme @Phil M suggère et créer un protocole à utiliser comme délégué.
0 votes
Cela répond-il à votre question ? Étant donné une vue, comment puis-je obtenir son viewController ?