LoginSignup
7
7

More than 5 years have passed since last update.

Swiftでちょっとカッコイイ第2引数なしDelegateメソッドの宣言

Last updated at Posted at 2017-11-23

自前でDelegateを宣言する時、第2引数がある時は、こんなふうに宣言しますよね。

protocol CustomViewDelegate: class {
  func customView(_ sender: CustomView, didTapSaveButton: UIButton)
}

しかし第2引数がないとこうなりがち。なんかダサイと思いつつこのように宣言していました。

protocol CustomViewDelegate: class {
  func customViewDidDismiss(_ sender: CustomView)
}

iOS SDKのUITableViewDataSourceで見られる頑張ってる感。

func numberOfSections(in tableView: UITableView) -> Int

でも英語だめなおじさんには思いつかないアイデア・・・でも、こんなのはObjective-C時代の名残りにすぎないのだ!

Swiftならこう書ける。

protocol CustomViewDelegate: class {
  func customView(_ sender: CustomView, didDismiss: ())
}

呼び出す時はこう。

delegate?.customView(self, didDismiss: ())

いい感じ。ちなみに引数なしinitメソッドが複数ある時も使えます。

ukiuki256.png

7
7
0

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
7
7