Pregunta

hola, ¿cómo puedo llamar a la vista actual, un método implementado en el controlador de vista de la vista de supervisión de la vista actual? Puedes ayudarme por favor. gracias

¿Fue útil?

Solución

Puede agregar una función - (void) initWithView: (EchiquierDisplayView *) aSuperview o algo así, defina una referencia en su

@interface pieceDraggableImageView : UIImageView { 
CGPoint startLocation; 
CGPoint startLocationInView;
EchiquierDisplayView *theSuperview;  
} 

@property (nonatomic, retain) EchiquierDisplayView *theSuperview;

-(void)correctDestinationPosition; 
-(void)initWithView:(EchiquierDisplayView *)aSuperview; 
...
-(void)askSuperview;
@end

@implementation pieceDraggableImageView

...
-(void)initWithView:(EchiquierDisplayView *)aSuperview
{
   theSuperview = aSuperview;
}
...
-(void) correctDestinationPosition
{
   [theSuperview correctIt];
}

Ahora asegúrese de implementar la función correctIt en su supervisión. Ojalá haya entendido bien tu pregunta ...

Otros consejos

Normalmente esto se hace a través de delegados.

Haga que la interfaz de su vista defina un protocolo y una referencia a algún delegado. Luego pídale a su controlador de vista principal que implemente este protocolo.

Entonces el padre haría esto:

someView.fooDelegate = self;

entonces la vista haría algo como esto:

if(self.fooDelegate != nil) {
   if([fooDelegate respondsToSelector:...]) {
      [fooDelegate performSelector:...];
   }
}

Esto no está compilado, pero creo que entiendes lo esencial.

UIViews no tienen conocimiento de sus controladores de vista. Deberá crear una subclase UIView personalizada que mantenga una referencia a un controlador de vista (o potencialmente más de uno), aunque al hacerlo se introducen más vínculos entre UIView y UIViewController.

Debería considerar la implementación del método en la clase de supervisión o vista en lugar de implementarlo en un controlador de vista.

Aquí hay otra manera:

SuperviewsViewController *controller = self.superview.nextResponder;

if (controller && [controller isKindOfClass:[SuperviewsViewController class]])
{
    [controller method];
}

Debería funcionar en la mayoría de los casos.

Referencia de UIResponder de Apple

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top