1
我是iOS開發新手,已閱讀關於擴展的文章。但是我找不到任何關於擴展和繼承的例子。如何覆蓋並繼承Swift中的擴展?
以SpreadsheetView爲例。我想覆蓋extension SpreadsheetView。
我發現我能在我自己的.swift文件創建另一部分覆蓋它:
extension SpreadsheetView {
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
// custom code
}
}
不過,我想保持默認的實現也。我如何從我的自定義函數調用它? super.scrollViewDidScroll
或(self as SpreadsheetView).scrollViewDidScroll
不起作用。
當我回到基本並複製所有代碼。它不允許。所以,這不是一個選項,對我說:
「rowHeaderView」不可訪問由於「內部」保護級別
我以前試過,並且出現錯誤'無法從其定義模塊外部的非開放類'SpreadsheetView'繼承。這是否意味着我無法繼承這個庫?並且必須直接修改lib? – Qooe
在Swift類中必須是'open',如果你不想在模塊之外重寫。 'SpreadsheetView'必須是公有或私有的,這樣你才能在模塊之外覆蓋它。 – Bilal
謝謝。這是否意味着修改模塊源是唯一的方法?或任何其他優雅通常處理這個原因? (所以如果它是封閉的源代碼,你不能直接改變它) – Qooe