LoginSignup
2
5

More than 5 years have passed since last update.

[3分で理解]Swiftのdelegateメソッドとは

Posted at

初心者がよく詰まると言われることのメソッド......
3分で理解できるように前書きはおいておいて、早速解説を始めていきましょう。

delegateとは...

すごく簡単に、

自分の書いているクラスから、他のクラスへ処理を引き渡すこと

なんですが、このメソッドの利点として

  • 呼び出し先のクラスのことを考えなくても良い
  • 複数のクラスでも利用可能

の2つがあります。
実際にサンプルコードでどのように書いていくかをみていきましょう

フロー

自分が処理を書いた場所:親、処理を呼び出したい場所:子
1. 親にdelegateメソッドをセットする

ViewController.swift
class ViewController: UIViewController, hogeDelegate {

    @IBOutlet hogetableView var delegateTableView: DelegateTableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        //自身にもセットする
        delegateTableView.hogedelegate = self
    }

    func hoge() {

        //code
    }

    // 以下略
}

注意すべき点は

  • 一行目、classと同時に宣言すること
  • viewDidLoad内にselfを用いて宣言すること
  1. Delegateファイルに記述する
ViewController.swift
protocol hogeDelegate: class {

    func hoge()
}
  1. 子に変数を宣言する
ViewController.swift
class DelegateTableView: UITableView, UITableViewDataSource, UITableViewDelegate {

    //delegateを設定
    var testdelegate: testDelegate?

    //〜省略〜

    // MARK: - UITableViewDelegate
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        self.deselectRow(at: indexPath, animated: true)

        self.testdelegate?.test()
    }
}

注意すべき点は親の時と同様に

  • 一行目、classと同時に宣言すること
  • あとは実際に呼び出すだけ!

 終わりに

非常に簡単なのがわかるかと思います。Delegateメソッドは頻繁に出て来るのでよく理解しておきましょう。

参考資料

2
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5