2009-08-14 6 views
2

dans le cas de direComment UIView est-il informé d'UIViewController d'une sous-vue ajoutée?

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
... 
[window addSubview:gameController.view]; 
... 
} 

comment la vue de Gamecontroller conserver association Gamecontroller? J'ai atteint un sommet à travers toutes les variables du débogueur et je ne vois aucune association autre qu'un drapeau booléen qui appartient à un contrôleur de vue. donc la vue est passée à une hiérarchie de vue (ne devrait pas nécessairement être hors de la fenêtre), cependant gameController obtiendra des événements tels que shouldAutorotateToInterfaceOrientation. Où est-ce être la piste gardé de si non comme une référence nichés dans le passé UIView de gameController.view

UIView *tmp = gameController.view; 
[window addSubview:tmp]; 

Son évident que Gamecontroller sait tmp, mais comment la fenêtre savoir sur Gamecontroller après ce code?

Répondre

3

UIViewController est un descendant de UIResponder et est inséré dans la chaîne du répondeur entre la vue et la vue d'ensemble de cette vue. Donc appeler nextResponder sur une vue gérée par un UIViewController retournera cette instance de UIViewController.

C'est ainsi que des événements tels que shouldAutorotateToInterfaceOrientation: sont passés à travers la hiérarchie des instances de UIResponder. Un diagramme montrant cela peut être vu dans figure 3.1 in the iPhone Application Programming Guide.