我制作了一个自定义的UITableView子类并实现了这个:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// scrolled...
}
现在,我认为UITableView也可能因为一些明显的原因而喜欢这个消息。但是,当我没有将它转发到超级时,出于某种原因,一切仍然正常。我必须把那个人转发给超级?我的意思是......这是一个委托方法实现,但据我所知,这仍然会覆盖在UITableView中实现的任何东西,不是吗?
编辑:我明白了......代表可以是任何人。别介意这个。但是:我在超类中有这样的东西,并创建一个子类。我怎么会知道超类确实实现了那个方法,我必须把它转发给super?
答案 0 :(得分:5)
简答:不 这些方法在UIScrollViewDelegate协议中定义 它们应该在委托中实现,该委托可能只有NSObject作为父代。
它不会覆盖任何内容,因为它是委托方法 UIScrollView就是这样做的,如果设置了委托,则调用委托方法。
答案 1 :(得分:2)
这是一个委托方法,这意味着它会被您的UITableView实例调用,以方便您使用。
滚动发生,UITableView内部代码将调用。
if ([delegate respondsTo:@selector(scrollViewDidScroll:)]) {
[delegate performSelector:@selector(scrollViewDidScroll:) withObject:[self scrollView]];
}
所以你使用这个方法来实现其他功能,例如当tableView滚动了一定量时激活一个控件。
希望这有帮助!