2010-06-11 18 views
9

He hecho esto para obtener la vista:obtener viewcontroller de UIView (iPhone)

[self.superview viewWithTag:10] 

Pero, ¿cómo puedo obtener viewcontroller de ese punto de vista. Al igual que puede obtener la vista del controlador de vista, quiero ir hacia otro lado para poder enviar un mensaje (llamar a un método) a ese controlador de vista. por ejemplo:

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

(obviamente eso no real de código, pero quiero algo así)

+0

echar un vistazo a los protocolos en el objetivo c – Daniel

+0

duplicado 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-via-code – user102008

+0

Las vistas no deberían necesitar hacer eso. –

Respuesta

22

Usted puede utilizar el método -nextResponder hacerlo:

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

Según http://developer.apple.com/library/ios/documentation/uikit/reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/nextResponder ", implementos UIView este método al devolver el objeto UIViewController que lo administra (si tiene uno) o su supervista (si no lo hace) "

+1

¿Es realmente limpio y seguro obtener viewcontroller de la vista llamando a este método? – booker

+1

En realidad, no funciona para mí. – booker

+1

Funcionó bien para mí –

12

puede e

[yourUIView.window.rootViewController doSomething] 
+0

algunos detalles adicionales responden sobre eso ... http://stackoverflow.com/a/2596519/294884 puede ayudar a alguien – Fattie

Cuestiones relacionadas