'NSObject <pagecontroldelegate>'没有可见的@interface声明选择器'pageControlPageDidChange:'</pagecontroldelegate>

时间:2012-05-24 18:34:01

标签: iphone objective-c ios macos delegates

我从this post得到了这个代码,一切都没问题,除了一件事,我有这个错误,我不知道如何解决。这是代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    CGPoint touchPoint = [[[event touchesForView:self] anyObject] locationInView:self];

    CGRect currentBounds = self.bounds;
    CGFloat x = touchPoint.x - CGRectGetMidX(currentBounds);

    if(x<0 && self.currentPage>=0){
        self.currentPage--;
        [self.delegate pageControlPageDidChange:self]; 
    }
    else if(x>0 && self.currentPage<self.numberOfPages-1){
        self.currentPage++;
        [self.delegate pageControlPageDidChange:self]; 
    }   
}

错误是:

No visible @interface for 'NSObject<PageControlDelegate>' declares the selector 'pageControlPageDidChange:'.

我试图用ARC运行这段代码,我删除了dealloc方法,在这里更改了赋值给弱者:

@property (nonatomic, weak) NSObject<PageControlDelegate> *delegate;

正如有人在答案中写道的那样,但它仍无效。

请帮帮我。

2 个答案:

答案 0 :(得分:5)

如果您的标题中有以下内容:

@protocol PageControlDelegate;

你错过了协议的实际定义。在链接帖子中第一个代码块的底部,这个代码包含缺少协议函数的声明:

@protocol PageControlDelegate<NSObject>
@optional
- (void)pageControlPageDidChange:(PageControl *)pageControl;
@end

答案 1 :(得分:0)

您需要导入声明PageControlDelegate协议的.h文件。