Frage

Hallo, wie kann ich in der aktuellen Ansicht aufrufen, ein Verfahren, bei dem Viewcontroller der aktuellen Ansicht des Super umgesetzt? kannst du mir bitte helfen. Thanx

War es hilfreich?

Lösung

Sie können eine Funktion hinzufügen - (void) initWithView: (EchiquierDisplayView *) aSuperview oder so ähnlich, definieren Sie eine Referenz in Ihrer

@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];
}

Nun sollten Sie die Funktion correctIt in Ihrem Superview zu implementieren. Hoffentlich verstand ich Ihre Frage richtig ...

Andere Tipps

Typischerweise wird dies durch die Delegierten geschehen.

Haben Sie Ihre Ansicht Schnittstelle ein Protokoll und einen Verweis auf einige Delegierte definieren. Dann haben Ihre Eltern Viewcontroller dieses Protokoll zu implementieren.

Dann ist die Mutter würde dies tun:

someView.fooDelegate = self;

dann die Ansicht würde so etwas tun:

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

Dies ist nicht kompiliert, aber ich denke, man den Kern erhalten.

UIViews haben keine Kenntnis über ihre View-Controller. Sie müssen eine benutzerdefinierte UIView Unterklasse erstellen, die einen Verweis auf einen (oder möglicherweise mehr als ein)-View-Controller unterhält, obwohl damit weitere Kopplung zwischen UIView und UIViewController einführt.

sollten Sie die Methode in der Klasse oder nach Ansicht der Super Umsetzung, anstatt sie in einem View-Controller implementiert.

Hier ist eine andere Art und Weise:

SuperviewsViewController *controller = self.superview.nextResponder;

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

Es sollte in den meisten Fällen funktionieren.

Apple UIResponder Referenz

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top