withアプリーチSwiftのUIKitフレームワークでアプリ開発している場合にモーダル画面から親の画面に戻ったことを検知する方法や親ビューを再描画する方法をまとめていきます。モーダルの実装方法については下記記事を参考にしてください。UIKit】モーダルウィンドウの実装方法!segueとpresentの2パターンモーダルが閉じたことを親ビューから検知するSwiftのUIKitでモーダルが閉じられたことを親のViewControllerから検知する方法は2種類あります。viewWillAppearメソッドで検知するpresentationControllerDidDismissメソッドで検知するviewWillAppearメソッドで検知するUIViewControllerクラスの持つviewWillAppearメソッドはビューが表示される直前に呼び出されるメソッドです。このメソッドを使用することでモーダルから遷移元の画面に戻った(ビューが再表示される)ことを検知することができます。使用するにはviewWillAppearメソッドをoverrideして定義してその中に実行したい処理があれば記述するだけです。}}しかしこの方法には注意点があります。fullScreenでないと検知できないモーダルの画面遷移を行う際はmodalPresentationStyleプロパティに値を渡すことでモーダル画面のスタイルを変更することができます。この値が親の画面を完全に覆い尽くすfullScreenでないとviewWillAppearでは検知することができません。nil)}例えばこの値が画面を完全に覆い尽くさないformSheetなどの場合だと検知することができません。この場合は親ビューの再描画が行われていないからです。.formSheetまたiOS12以前では明示的に指定しない場合、自動的にfullScreenが適応されていましたが、iOS13以降ではformSheetに変更になっているので注意してください。presentationControllerDidDismissメソッドで検知する公式リファレンス:UIAdaptivePresentationControllerDelegateUIAdaptivePresentationControllerDelegateクラスのpresentationControllerDidDismissメソッドはプレゼンテーション(モーダル)が閉じられたことを検知するメソッドです。この方法の場合はステップ数が少し多いです。子のdismissメソッドの前に親のpresentationControllerのメソッドを呼び出すまずは親にUIAdaptivePresentationControllerDelegateを継承させます。子ビューを取得したらpresentationControllerのdelegateプロパティに自身をセットします。presentationControllerDidDismissには必要な処理を記述しておきます。}}子側ではdismissメソッドを呼び出して戻る前に親のpresentationControllerDidDismissメソッドを呼び出しています。}}この方法は戻ったことを検知しているように見えますが、呼び出されるタイミングは以下のようになります。モーダルから戻ったよdismissされていないよですがこの方法ならfullScreenでなくても一応モーダルから戻ったことを検知?することができました。モーダルの場合は親側のメソッドを子側から呼び出せない?最初は親側に適当なメソッドを用意して子側から親を取得して親のメソッドを呼び出そうと思いましたが、うまくいきませんでした。}}この方法の場合はビルドすることはできたのですが、実行時に以下のようなエラーが発生してしまいました。valueモーダルはビュー階層は異なる?公式リファレンス:parentプロパティparentプロパティは自身の親となるViewControllerが格納されるプロパティなのでここから親のメソッドを実行できるかと思いましたが、モーダル遷移の場合格納されていたのはnilでした。Controllerのようなビュー階層でモーダルビューが管理されていると思いましたが、どうやら2つ目のように別々の階層で管理されているようです。ModalViewControllerそのためdelegateを使ってのメソッドの実行方法になりました。おすすめ記事:【Swift】delegate(デリゲート)とは?使い方とメリットまだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。ご覧いただきありがとうございました。友達や家族の誕生日を登録しておくと当日に通知が届きお知らせしてくれるiOSアプリです。貸し借り管理アプリお金の貸し借りを管理するためのアプリです。貸借の色が分かれているので識別しやすく、使いやすさを求めてできるだけシンプルなUIにしています。カシホン人に貸すことが多く、誰に貸したか忘れがちな本の貸し借りを記録できるアプリです。