2009-06-23 8 views
10

J'ai un problème et je vais essayer d'expliquer la question:Comment accéder au contrôleur de vue d'un super?

  1. j'ai une principale UIViewController (écran entier)
  2. J'ai un UIViewController secondaire (setbounds)
  3. j'ai ajouté mon avis secondaire à mon mainView en utilisant ceci:

    [mainController.view addSubview:secondaryController.view]; 
    
  4. J'ai créé un troisième contrôleur: modalController, je l'ai ajouté à mon sécondaire contrôleur y comme ceci:

    [secondaryController presentModalViewController:modalController animated:YES]; 
    
  5. Je fais le calcul basé sur des événements à l'intérieur de mon modelController.

  6. Je suis en mesure d'envoyer des messages de mon modalController à mon secondaryController en utilisant:

    [[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5]; 
    

    NOTE: "soi" correspond à la modalController

  7. Je dois passer "myObject" à mon mainController, mais je ne peux pas faire référence à mon mainController du secondaryController. J'ai essayé ceci:

    [[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5]; 
    

    NOTE: "soi" correspond à la secondaryController

    mais il ne fonctionne pas, j'ai accès à la vue de mon mainController en utilisant: self.view.superview

    REMARQUE: "soi" est mon secondaryController

mais non à son contrôleur.

Répondre

32

Dans votre contrôleur secondaire, essayez

id mainViewController = [self.view.superview nextResponder]; 

et vérifier si tel est le contrôleur de vue que vous recherchez.

documentation d'Apple -[UIResponder nextResponder]:

UIView implémente cette méthode en retournant l'objet UIViewController qui la gère (si elle en a un) ou son superview (si elle ne fonctionne pas)

+1

Merci Nikolai !!!!!!!!!!!!!!!!! Qui a fonctionné parfaitement :) merci Cordialement de Guadalajara au Mexique !! Alejandra :) – Alejandra

+1

Vous êtes les bienvenus (de Berlin, Allemagne) –