いやー、7年iOSやってても全然しらなかったんですが、Segueを自作するとちょっと便利ですね。
モーダルで開いたViewControllerを閉じるときにボタンを置いてコードを書くのは面倒だなーと思ってたんですが、閉じるボタンの操作をSegueで定義できます。
準備としてUIStoryboardSegue
を継承したサブクラスをプロジェクト内に作っておきます。
class DismissControllerSegue: UIStoryboardSegue {
override func perform() {
self.source.dismiss(animated: true, completion: nil)
}
}
コードはシンプルでperform()
の中にやりたいことを書く形。今回は自分自身をdismiss
するだけです。
ここまででstoryboardが参照してくれるようになっていますので、あとはボタンと紐付けるだけです。controlキーを押したままボタンからViewController自身にドラッグすると↓のようなpopoverみたいなのが出ます。
ここで、先程追加したSegueを表すdismiss controller
を選べばOK。ボタンタップ時に自身が閉じてくれます。