2017-06-15 75 views
1

我想在func scrollViewDidScroll(_ scrollView: UIScrollView) {...}上做点什么,这样每个UITableView都会运行这个覆盖函数。如何覆盖UITableView的功能?

我该怎么做?我可以通过扩展或子类来实现吗?

我是编程新手。任何帮助,将不胜感激。

回答

0

scrollViewDidScrollUIScrollViewDelegate的代表方法,并且UITableViewUIScrollView继承。这不能通过扩展或继承UITableView来实现,因为它是委托方法。

只能在您的UITableView委托类中覆盖此功能。如果您正在使用UIViewController s。创建一个基类BaseViewController

class BaseViewController: UIViewController { 
    public func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    } 
} 

如果使用UITableViewController S,创建一个基类BaseTableViewController

class BaseTableViewController: UITableViewController { 
    public override func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    } 
} 

现在只是改变所有控制器的超类BaseViewControllerBaseTableViewController

希望它有帮助。

+0

谢谢,但我认为你让我错了。例如,我有几个uiviewcontroller,每个人都有一个tableview。我不想在每个tableview中重写该方法。我只是想重写一次,并适用于所有tableview – henry

+1

hmmm ...这不能通过扩展或继承'UITableView'来实现,因为它是委托方法。 如果你所有的'UITableView'委托都是'UIViewController',你可以继承'UIViewController'让'BaseViewController'并覆盖'BaseViewController'中的'scrollViewDidScroll'。现在你只需要改变所有'UIViewController'继承'BaseViewController' – Bilal

+0

我必须在baseviewcontroller上初始化uitableview?似乎有点复杂。你介意提供一些代码的例子吗?非常感谢你, – henry