2012-12-20 4 views
2

사용자 지정 대리인이 전화를받지 못합니다. 여기에 내 설정입니다.사용자 지정 대리인이 전화를받지 못합니다.

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 

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

ViewController.m

ViewController.h

SlideView.m

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

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

: ViewControllerUIScrollView의 서브 클래스 인 오브젝트를 가지고 SliderView

#import "ViewController.h" 
@implementation ViewController 

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

그래서 ViewController은 위의 방법으로 전화를 수신하지 않습니다. thumbGalleryViewViewController으로, 위임은 ViewController으로 설정되어 있습니다. SlideViewhandleTap은 정상적으로 메시지를 인쇄하고 있지만 [[self slideViewDelegate] didTapImageData: imageData atIndex:0 ];은 무시됩니다. 왜?

답변

1

delegate은 스크롤보기가 ivar입니다.

당신은 slideViewDelegate 편집


ViewController

그런

IBOutlet __weak id<SlideViewDelegate> slideViewDelegate; 

IBOutlet이 XIB에서 slideViewDelegateViewController
루게릭 병을 연결하는 추가 설정해야 오, 선명도 enter image description here

+0

이것은 트릭을 만들었습니다. 데모 해줘서 고마워. – Vad

+0

그것은 '내 기쁨 :) –

1

대리인을 설정할 위치를 다시 한 번 확인하십시오. -handleTap:-didTapImageData:atIndex: 메서드를 호출 할 때 대리자가 nil 인 경우 아무 것도 수행되지 않습니다.

+0

예에 대한 SliderView
추가 된 이미지에 스크롤 뷰의 클래스를 변경 우리'null'을 위임해야합니다. 좋습니다,하지만 ViewController에 대한 델리게이트 참조를 드래그했습니다. 문제는 어디에 있습니까? – Vad

+0

IB 내에서 slideViewDelegate 링크를 드래그 한 것 같습니다. 따라서 해당 속성이 올바르게 설정되어 있는지 확인하십시오. 그렇지 않으면 didTapImageData ist는 아무것도하지 않는 nil로 보내집니다. –

+0

'slideViewDelegate'가 아닌 'thumbGalleryView'를 IB에서 드래그했습니다. 잘못 됐나? 'thumbGalleryView'는 델리게이트가있는'SliderView'입니다. – Vad

관련 문제