gpt4 book ai didi

iphone - 自定义代理未接听电话

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:07 25 4
gpt4 key购买 nike

我的自定义委托(delegate)没有接到电话。这是我的设置。 ViewController 有一个 SliderView 对象,它是 UIScrollView 的子类:

幻灯片 View .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

幻灯片 View .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 并且委托(delegate)也设置为 ViewControllerSlideViewhandleTap 打印消息正常,但 [[self slideViewDelegate] didTapImageData: imageData atIndex:0 ]; 被忽略。为什么?

最佳答案

您已经设置了 delegate,它是 ScrollView 的 ivar

您必须将 slideViewDelegate 设置为 ViewController


已编辑

添加IBOutlet

IBOutlet __weak id<SlideViewDelegate> slideViewDelegate;

然后从你的 xib 连接 slideViewDelegateViewController
还记得将 ScrollView 的类更改为 SliderView
为清晰起见添加了图片 enter image description here

关于iphone - 自定义代理未接听电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com