2011-01-27 10 views
34

Cuando quiero acceder a los padres de la corriente UIViewUIView declaro objeto de matriz en UIViewUIView actual y acceder a ella mediante la asignación del objeto padre UIView a la propiedad objeto de la vista actual.Acceso vista padre de vista actual - SDK iPhone

¿Hay alguna manera de deshacerse de esto y llamar directamente a los métodos o propiedades de la vista principal?

También probé (parentView *) self.view.superview pero no me ayudó.

Se da error al llamar a la función de este objeto como

[UIVIew unrecognized selector...... 

Muchas gracias,
Nav

Respuesta

67

Si llama esto directamente desde un UIView (y no un UIViewController), lo que debería ser self.superview en lugar de self.view.superview.

+0

es UIViewController. Pero supongo que tampoco debería funcionar para UIView porque los objetos son los mismos, ambos son UIView –

+2

Tenga en cuenta que esto devuelve nil en ViewDidLoad. Solo en y después de viewDidAppear es utilizable. –

0

@ Naveed: este es el código común que puede usar para ver si es vista primaria o secundaria, simplemente cambie el nombre del botón que desea presionar y el nombre de la vista a la que desea ir. Por ejemplo en la espalda pulse el botón u desea ir en vista de la biblioteca y luego escribir el código -

-(IBAction)backButtonPressed:(id) sender 
{ 
     llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil]; 
    libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:libraryview animated:YES]; 
    [libraryview release]; 
} 

Avísame si ur problema se resuelve o no.

+0

Muchas gracias por su ayuda Archana. En realidad, mi problema es que no quiero ver el nombre. Yo quería hacerlo dinámico. Gracias. –

0

Lo que puedo pensar es que desea llamar al método viewcontroller desde su vista, que ha agregado a la vista del controlador de vista.

Ahora tiene dos opciones desde aquí, ya sea que configure su controlador de vista delegado de su vista y luego llame al método de su viewcontroller por [delegate performSelector:] enfoque.

El otro enfoque es acceder a la supervista de su vista, y luego obtener su controlador. No puedes hacer eso directamente, porque si pudieras hacer eso, vencería el propósito completo de MVC.

embargo, todavía hay una salida, aquí van: -

Get to UIViewController from UIView?

Esperanza, esto le ayuda.

Cuestiones relacionadas