【发布时间】:2017-11-17 08:32:05
【问题描述】:
我想在func scrollViewDidScroll(_ scrollView: UIScrollView) {...} 上做点什么,这样每个UITableView 都会运行这个覆盖函数。
我该怎么做?我可以通过扩展或子类来做到这一点吗?
我是编程新手。任何帮助将不胜感激。
【问题讨论】:
标签: ios swift uitableview
我想在func scrollViewDidScroll(_ scrollView: UIScrollView) {...} 上做点什么,这样每个UITableView 都会运行这个覆盖函数。
我该怎么做?我可以通过扩展或子类来做到这一点吗?
我是编程新手。任何帮助将不胜感激。
【问题讨论】:
标签: ios swift uitableview
scrollViewDidScroll 是 UIScrollViewDelegate 的委托方法,UITableView 继承自 UIScrollView 。这不能通过扩展或子类化 UITableView 来实现,因为它是一个委托方法。
您只能在 UITableView 委托类中覆盖此函数。
如果您使用的是UIViewControllers。创建基类BaseViewController
class BaseViewController: UIViewController {
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
}
如果你使用UITableViewControllers,创建一个基类BaseTableViewController
class BaseTableViewController: UITableViewController {
public override func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
}
现在只需将所有控制器超类更改为 BaseViewController 或 BaseTableViewController。
希望对您有所帮助。
【讨论】:
UITableView 来实现,因为它是一个委托方法。如果您的所有UITableView 代表都是UIViewController,您可以继承UIViewController 假设BaseViewController 并覆盖scrollViewDidScroll 基础BaseViewController. Now you just have to change all your UIViewController's inherit from BaseViewController`