当我在UITableView中实现-scrollViewDidScroll:UIScrollViewDelegate时,我必须调用super吗?

时间:2010-04-20 11:33:57

标签: iphone uitableview

我制作了一个自定义的UITableView子类并实现了这个:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // scrolled...
}

现在,我认为UITableView也可能因为一些明显的原因而喜欢这个消息。但是,当我没有将它转发到超级时,出于某种原因,一切仍然正常。我必须把那个人转发给超级?我的意思是......这是一个委托方法实现,但据我所知,这仍然会覆盖在UITableView中实现的任何东西,不是吗?

编辑:我明白了......代表可以是任何人。别介意这个。但是:我在超类中有这样的东西,并创建一个子类。我怎么会知道超类确实实现了那个方法,我必须把它转发给super?

2 个答案:

答案 0 :(得分:5)

简答:不 这些方法在UIScrollViewDelegate协议中定义 它们应该在委托中实现,该委托可能只有NSObject作为父代。

它不会覆盖任何内容,因为它是委托方法 UIScrollView就是这样做的,如果设置了委托,则调用委托方法。

答案 1 :(得分:2)

这是一个委托方法,这意味着它会被您的UITableView实例调用,以方便您使用。

滚动发生,UITableView内部代码将调用。

if ([delegate respondsTo:@selector(scrollViewDidScroll:)]) {
    [delegate performSelector:@selector(scrollViewDidScroll:) withObject:[self scrollView]];
}

所以你使用这个方法来实现其他功能,例如当tableView滚动了一定量时激活一个控件。

希望这有帮助!