2010-06-11 6 views
9

Je l'ai fait pour obtenir la vue:obtenir la viewcontroller de UIView (iphone)

[self.superview viewWithTag:10] 

Mais comment puis-je obtenir le viewcontroller de ce point de vue. Juste comme vous pouvez obtenir la vue du viewcontroller je veux aller dans l'autre sens afin que je puisse envoyer un message (appeler une méthode) à ce viewcontroller. par exemple:

[[self.superview viewWithTag:10].viewController doSomething]; 

(évidemment qui ne code réel mais je veux quelque chose comme ça)

+0

ont un regard sur les protocoles dans l'objectif c – Daniel

+0

double de http://stackoverflow.com/questions/1340434/get-to-uiviewcontroller-from-uiview-on-iphone, http: // stackoverflow. com/questions/2367348/how-to-get-a-uiviewcontroller-from-a-uiview-through-code – user102008

+0

Les vues ne devraient pas avoir besoin de faire cela. –

Répondre

22

Vous pouvez utiliser la méthode -nextResponder pour le faire:

[(YourUIViewController *)[[self.superview viewWithTag:10] nextResponder] doSomething]; 

Selon http://developer.apple.com/library/ios/documentation/uikit/reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/nextResponder, « met en œuvre UIView cette méthode en retournant l'objet UIViewController qui le gère (s'il en a un) ou son superview (si ce n'est pas le cas) "

+1

Est-il vraiment propre et sûr d'obtenir le viewcontroller de la vue en appelant cette méthode? – booker

+1

En fait, ça ne marche pas pour moi. – booker

+1

Cela a bien fonctionné pour moi –

12

vous pouvez nous e

[yourUIView.window.rootViewController doSomething] 
+0

certains détails plus de réponses à ce sujet ... http://stackoverflow.com/a/2596519/294884 peut aider quelqu'un – Fattie

Questions connexes