【问题标题】:How to override UITableView's function?如何覆盖 UITableView 的功能?
【发布时间】:2017-11-17 08:32:05
【问题描述】:

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

我该怎么做?我可以通过扩展或子类来做到这一点吗?

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

【问题讨论】:

    标签: ios swift uitableview


    【解决方案1】:

    scrollViewDidScrollUIScrollViewDelegate 的委托方法,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) {
    
        }
    }
    

    现在只需将所有控制器超类更改为 BaseViewControllerBaseTableViewController

    希望对您有所帮助。

    【讨论】:

    • 谢谢,但我想你误会了。例如,我有几个 uiviewcontroller,每个都有一个 tableview。我不想覆盖每个 tableview 中的方法。我只想覆盖一次并应用于所有 tableview
    • hmmm... 这不能通过扩展或子类化UITableView 来实现,因为它是一个委托方法。如果您的所有UITableView 代表都是UIViewController,您可以继承UIViewController 假设BaseViewController 并覆盖scrollViewDidScroll 基础BaseViewController. Now you just have to change all your UIViewController's inherit from BaseViewController`
    • 我必须在 baseviewcontroller 上初始化 uitableview?似乎有点复杂。你能介意提供一些代码示例吗?非常感谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多