自前で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メソッドが複数ある時も使えます。