Comment accéder au contrôleur de vue d'un super?
-
06-07-2019 - |
Question
J'ai un problème et je vais essayer d'expliquer le problème:
- J'ai un
UIViewController
principal (écran complet) - J'ai un
UIViewController
secondaire (setbounds) -
J'ai ajouté ma vue secondaire à ma
mainView
en utilisant ceci:[mainController.view addSubview:secondaryController.view];
-
J'ai créé un troisième contrôleur:
modalController
, je l'ai ajouté à mon contrôleur secondaire comme suit:[secondaryController presentModalViewController:modalController animated:YES];
-
Je calcule en fonction de certains événements de mon
modelController
. -
Je peux envoyer des messages de mon
modalController
à monsecondaryController
en utilisant:[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
REMARQUE: "auto". correspond au
modalController
-
Je dois passer "myObject". à mon
mainController
, mais je ne peux pas faire référence à monmainController
à partir dusecondaryController
. J'ai essayé ceci:[[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
REMARQUE: "auto". correspond au
secondaryController
mais cela ne fonctionne pas, j'ai accès à la vue de mon contrôleur principal avec:
self.view.superview
REMARQUE: "auto". est mon
secondaryController
mais non à son contrôleur.
La solution
Dans votre contrôleur secondaire, essayez
id mainViewController = [self.view.superview nextResponder];
et vérifiez s'il s'agit du contrôleur de vue que vous recherchez.
Documentation Apple sur - [UIResponder nextResponder]
:
UIView implémente cette méthode en renvoyant l’objet UIViewController qui la gère (s’il en a un) ou son superview (si ce n’est pas le cas)