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

don*_*ile 2 iphone uitableview

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // scrolled...
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mac*_*ade 5

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

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

  • 这可能让某些人感到困惑的一个原因是你正在使用UITableViewController的子类,它已经实现了这个方法,因此要求你在函数前面加上override关键字.但是,答案仍然是正确的,因为在这种情况下不要打电话给超级是非常重要的.(只是假装超级不是一件事.) (2认同)