اي فون الإستراحة - استدعاء أسلوب من viewcontroller superview طريقة العرض ل

StackOverflow https://stackoverflow.com/questions/1405942

  •  05-07-2019
  •  | 
  •  

سؤال

ومرحبا كيف يمكنني الاتصال في طريقة العرض الحالية، وهي طريقة تنفيذها في viewcontroller من superview العرض الحالي؟ هل يمكنك مساعدتي من فضلك. ثنإكس

هل كانت مفيدة؟

المحلول

ويمكنك إضافة وظيفة - (الفراغ) initWithView: (EchiquierDisplayView *) aSuperview أو شيء من هذا القبيل، وتحديد مرجعية في الخاص بك

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

والآن تأكد من تنفيذ correctIt وظيفة في superview الخاص بك. نأمل فهمت سؤالك الحق ...

نصائح أخرى

وعادة ما يتم ذلك من خلال المندوبين.

هل لديك واجهة وجهة نظركم تحدد بروتوكول وإشارة إلى بعض المندوبين. بعد ذلك الديك viewcontroller تنفيذ هذا البروتوكول.

وبعد ذلك الوالد أن تفعل هذا:

someView.fooDelegate = self;

وبعد ذلك عرض سيفعل شيئا من هذا القبيل:

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

لا تجميع هذه، ولكن أعتقد أن تحصل على جوهر.

وUIViews ليس لديهم المعرفة وحدات تحكم وجهة نظرهم. سوف تحتاج إلى إنشاء UIView فرعية مخصصة التي تحافظ على الإشارة إلى (أو يحتمل أن تكون أكثر من واحد) وحدة تحكم رأي واحد، على الرغم من أن تفعل ذلك يقدم المزيد من اقتران بين UIView وUIViewController.

ويجب عليك أن تنظر في تنفيذ الأسلوب في فئة superview أو طريقة العرض بدلا من تنفيذ ذلك في وحدة تحكم الرأي.

وهنا طريقة أخرى:

SuperviewsViewController *controller = self.superview.nextResponder;

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

ويجب أن تعمل في معظم الحالات.

<وأ href = "http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/nextResponder" يختلط = "نوفولو"> أبل UIResponder المرجعي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top