2012-12-20 35 views
2

我的自定義委託沒有收到呼叫。這是我的設置。 ViewController具有SliderView對象,它是的UIScrollView一個子類:自定義委託沒有收到呼叫

SlideView.h

#import <UIKit/UIKit.h> 

@protocol SlideViewDelegate <NSObject 
@required 
-(void) didTapImageData:(NSMutableArray*)imageData atIndex:(int)index; 
@end 

@interface SliderView : UIScrollView<UIGestureRecognizerDelegate> { 
    __weak id<SlideViewDelegate> slideViewDelegate; 
} 

@property (nonatomic, weak) id<SlideViewDelegate> slideViewDelegate; 

@end 

SlideView.m

#import "SliderView.h" 
@implementation SliderView 
@synthesize slideViewDelegate; 

- (void) handleTap:(UITapGestureRecognizer *)recognizer{ 
    NSLog(@"tapped"); 
    [[self slideViewDelegate] didTapImageData: imageData atIndex:0 ]; 
} 

ViewController.h

@interface ViewController : UIViewController < 
             UIScrollViewDelegate, 
             SlideViewDelegate>{ 
    SliderView *thumbGalleryView;//delegate and reference are set in XCode 
} 

ViewController.m

#import "ViewController.h" 
@implementation ViewController 

-(void)didTapImageData:(NSMutableArray*) imageData atIndex:(int)index{ 
    NSLog(@"NOT WORKING HERE"); 
} 

因此ViewController從未接收過上述方法的呼叫。 thumbGalleryView鏈接到ViewController,代表也設置爲ViewControllerSlideViewhandleTap正在打印信息正常,但[[self slideViewDelegate] didTapImageData: imageData atIndex:0 ];被忽略。爲什麼?

回答

1

您已設置delegate這是滾動視圖的ivar

您必須設置slideViewDelegateViewController


編輯

添加IBOutlet

IBOutlet __weak id<SlideViewDelegate> slideViewDelegate; 

然後從你的XIB連接slideViewDelegateViewController
阿爾斯Ø記得類滾動視圖改變爲SliderView
添加的圖像爲清楚起見 enter image description here

+0

這個伎倆。感謝您的演示。 – Vad

+0

這是我的榮幸:) –

1

仔細檢查你設置你的委託 - 如果您的代理是nil當時-handleTap:調用你-didTapImageData:atIndex:方法,什麼都不會發生。

+0

是的,我們委託'null'。好的,但我將一個委託引用拖到ViewController。問題在哪裏? – Vad

+0

我懷疑你在IB中拖動了一個slideViewDelegate鏈接。所以請確保該屬性設置正確。否則didTapImageData ist只是發送到零,這不做任何事情。 –

+0

我在IB中拖動'thumbGalleryView',而不是'slideViewDelegate'。這是錯的嗎? 'thumbGalleryView'是'SliderView',它有一個委託。 – Vad