2017-06-15 5 views
1

func scrollViewDidScroll(_ scrollView: UIScrollView) {...}で何かしたいので、すべてのUITableViewがこのオーバーライド機能を実行します。UITableViewの機能をオーバーライドする方法は?

どうすればいいですか?エクステンションやサブクラスでこれを行うことはできますか?

新しいものです。どんな助けもありがとう。

答えて

0

scrollViewDidScrollは、UIScrollViewDelegateの代理メソッドであり、UITableViewUIScrollViewから継承されます。これは、デリゲートメソッドであるため、UITableViewの拡張またはサブクラス化では実現できません。

この機能は、UITableViewデリゲートクラスでのみオーバーライドできます。

UIViewControllerを使用している場合。あなたがUITableViewController Sを使用している場合は、基本クラスBaseViewController

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

    } 
} 

を作成し、BaseTableViewController

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

    } 
} 

が今だけBaseViewControllerまたはBaseTableViewControllerにすべてのコントローラのスーパークラスを変更する基本クラスを作成します。

希望します。

+0

ありがとうございますが、私は間違っていると思います。たとえば、私はいくつかのuiviewcontrollerを持っていて、それぞれに1つのtableviewがあります。私は、各テーブルビューでメソッドをオーバーライドしたくありません。私はちょうど1回オーバーライドしてすべてのテーブルビューに適用したい – henry

+1

hmmm ...これはデリゲートメソッドであるため、拡張子または 'UITableView'のサブクラス化では達成できません。 すべての 'UITableView'デリゲートが' UIViewController'であれば 'BaseViewController'をサブクラス化し、ベース' BaseViewControllerの 'scrollViewDidScroll'をオーバーライドすることができます。今度は 'UIViewController'のすべてを' BaseViewController'から継承する必要があります。 – Bilal

+0

baseviewcontrollerでuitableviewを初期化する必要がありますか?少し複雑に思えます。コードの例を教えていただけますか?そんなにありがとう、 – henry

関連する問題