3

我从这篇文章中得到了这段代码,一切都很好,除了一件事,我有这个错误,我不知道如何修复。这是代码:

- (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 方法,在这里将 assign 更改为 weak:

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

正如有人在答案中所写,但它仍然无法正常工作。

请帮我。

4

2 回答 2

5

如果在您的标题中,您只有:

@protocol PageControlDelegate;

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

@protocol PageControlDelegate<NSObject>
@optional
- (void)pageControlPageDidChange:(PageControl *)pageControl;
@end
于 2012-05-24T18:50:54.317 回答
0

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

于 2012-05-24T18:37:22.783 回答