ios - 如何覆盖和继承 Swift 中的扩展?

标签 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' is inaccessible due to 'internal' protection level

最佳答案

您不能覆盖扩展中的任何实现。扩展用于向现有类、结构、枚举或协议(protocol)类型添加新功能。

如果你想重写任何函数,你应该重写类,然后重写方法。像这样的东西。

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

关于ios - 如何覆盖和继承 Swift 中的扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45126054/

相关文章:

ios - UITableViewCell 更新模型的正确 MVC 方法?

ios - 获取自应用程序上次打开以来收到的所有推送通知

swift - watchos 6 独立应用程序未触发后台刷新任务

swift - 您能否在 Swift 中的扩展之间进行覆盖? (编译器似乎很困惑!)

arrays - 在数组中存储值与在 Swift 中创建扩展函数

ios - 如何在扩展中修改UIButton的accessibilityLabel

ios - 使用静态和滚动 subview 实现 View

objective-c - 尝试捕捉不起作用

iphone - 如何在 Objective C 中访问 gmail 数据

ios - 根据内容动态改变弹出框的大小