2017-06-15 77 views
1

我想在func scrollViewDidScroll(_ scrollView: UIScrollView) {...}上做點什麼,這樣每個UITableView都會運行這個覆蓋函數。如何覆蓋UITableView的功能?

我該怎麼做?我可以通過擴展或子類來實現嗎?

我是編程新手。任何幫助,將不勝感激。

回答

0

scrollViewDidScrollUIScrollViewDelegate的代表方法,並且UITableViewUIScrollView繼承。這不能通過擴展或繼承UITableView來實現,因爲它是委託方法。

只能在您的UITableView委託類中覆蓋此功能。如果您正在使用UIViewController s。創建一個基類BaseViewController

class BaseViewController: UIViewController { 
    public func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    } 
} 

如果使用UITableViewController S,創建一個基類BaseTableViewController

class BaseTableViewController: UITableViewController { 
    public override func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    } 
} 

現在只是改變所有控制器的超類BaseViewControllerBaseTableViewController

希望它有幫助。

+0

謝謝,但我認爲你讓我錯了。例如,我有幾個uiviewcontroller,每個人都有一個tableview。我不想在每個tableview中重寫該方法。我只是想重寫一次,並適用於所有tableview – henry

+1

hmmm ...這不能通過擴展或繼承'UITableView'來實現,因爲它是委託方法。 如果你所有的'UITableView'委託都是'UIViewController',你可以繼承'UIViewController'讓'BaseViewController'並覆蓋'BaseViewController'中的'scrollViewDidScroll'。現在你只需要改變所有'UIViewController'繼承'BaseViewController' – Bilal

+0

我必須在baseviewcontroller上初始化uitableview?似乎有點複雜。你介意提供一些代碼的例子嗎?非常感謝你, – henry