

UITableViewを継承したMyTableViewを作ります。

「UITableView#delegate: UITableViewDelegate」が「UIScrollView#delegate:  
「MyTableView#delegate: MyTableViewDelegate」と拡張したいです。

しかし普通に書くと、以下のようにエラーになってしまいます。

[code]

    class MyTableView: UITableView {
        override var delegate: MyTableViewDelegate? // Property 'delegate' with type 'MyTableViewDelegate?' cannot override a property with type 'UITableViewDelegate?'
    }
    
    protocol MyTableViewDelegate: UITableViewDelegate {
    }
    
[/code]

どうすればいいでしょうか？


CC BY-SA 3.0
2017-11-11T14:32:28.000
39504
2020-12-16T20:04:50.600
427
question
swift ios
UITableViewのDelegateを拡張する方法


別の変数名を付けて、本来のデリゲートに代入するのが良いと思います。

[code]

    class MyTableView: UITableView {
        var myDelegate: MyTableViewDelegate? {
            set(value) {
                self.delegate = value
            }
            get {
                return self.delegate as? MyTableViewDelegate
            }
        }
    }
    
[/code]

余談ですが、UIを非常にこだわるのではない限りは、UITableViewを継承するのはオススメしません。


CC BY-SA 3.0
2017-11-14T07:50:36.557
39565
2017-11-14T07:50:36.557
9558
39504
answer