如何在Swift中覆盖和继承扩展?

时间:2017-07-16 07:15:58

标签: ios swift swift-extensions

我是iOS开发的新手,并阅读过有关扩展程序的文章。但我找不到任何关于扩展和继承扩展的例子。

SpreadsheetView为例。我想覆盖extension SpreadsheetView

我发现我可以通过在我自己的.swift文件中创建另一个扩展来覆盖它:

extension SpreadsheetView {
    public func scrollViewDidScroll(_ scrollView: UIScrollView) {
    // custom code
    }
}

但是,我也希望保留默认实现。如何从我的自定义函数中调用它? super.scrollViewDidScroll(self as SpreadsheetView).scrollViewDidScroll不起作用。

当我回到基本并复制所有代码时。它没有允许。所以它不是我的选择:

  

' rowHeaderView'由于内部'而无法访问保护水平

1 个答案:

答案 0 :(得分:1)

您无法覆盖扩展程序中的任何实现。扩展用于向现有类,结构,枚举或协议类型添加新功能。

如果要覆盖任何函数,则应覆盖该类,然后重写该方法。像这样的东西。

class MySpreadsheetView: SpreadsheetView {
    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        super.scrollViewDidScroll(scrollView)
        //....
    }
}