会社のブログログイン登録スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,808件1コードでモーダル画面を表示させていますが、閉じる際にdismissは表示元、表示先どちらで記載するのが正しいのでしょうか。動作的にはどちらに書いても閉じられます。調べていて、どちらのやり方も見つかりどちらが正しいのか、よく理解できないのでご質問させてください。どちらのViewControllerでdismissを行ってもなぜモーダル画面を閉じれるのかと思っています。普通に考えるとself.dismiss(自分自身を閉じる)なので、モーダル画面側でdismissするという形なのでしょうか?ただ、その場合に表示元でdismissした場合は表示元が閉じられるという意味になるかなと思うのですが、なぜ表示元が閉じられないのかと思っています。dismissの意味がわからず。(投稿順)1この場合はどちらに書くのも正しいです。それは意図した挙動で正しいです。dismissal.https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismissこのように書いてある通り、dismiss()メソッドはモーダルビューとして表示先の子ビューコントローラを閉じます。子ビューコントローラがそれ以上モーダル表示をしていない状態でdismiss()を読んだ場合は、自身を表示した表示元の親ビューコントローラに処理を移譲するので、結果として表示元のビューコントローラからdismiss()メソッド呼ぶのと同じことになります。子ビューコントローラ(ここではModalViewController)がさらに別のビューコントローラをモーダル表示していた場合は同じ結果にならず、その子ビューコントローラだけが閉じられます。このとき、一番大元のビューコントローラ(ここではViewController)のdismiss()メソッドを読んだ場合はそれ以下のビュー(ModalViewControllerとその子ビューコントローラ)をすべて閉じます。この挙動は複数のモーダルビューを一度に閉じたい場合に活用します。まとめると、モーダル表示したビューコントローラが1枚の場合(表示元と表示先しかない場合)はどちらのdismiss()メソッドを呼んでもまったく同じ結果になります。どちらを呼ぶのも正しいです。モーダル表示を連続して2回以上行っているときは、一番上に重なっているビューコントローラとそのすぐ下のビューコントローラについては同じ結果になります。それ以上下のビューコントローラについては自分より上のモーダルビューをすべて閉じます。モーダル表示したビューコントローラが1枚の場合と2枚以上の場合で分けてまとめましたが、同じことを行っているだけです。わかりにくければ実際にコードを書いて試してみることをオススメします。個の銅バッジ1ご回答ありがとうございます。すごく理解する事ができました。簡単に考えると、'dismiss'は最上位のモーダルビューコントローラーが破棄される。上とそのすぐ下よりも下にあるビューコントローラーから呼ばれた場合は、呼んだビューコントローラーより上をすべて破棄という形なのですね。実際にコードを書いてみて試してみます。|この質問に回答するには、ログインする必要があります。求めていた回答ではありませんか?swiftiosxcodeのタグが付いた他の質問を参照する。関連する質問0UIImageのリサイズでdrawInRectをfor文で回した時のメモリ解放タイミングについて1storyboardの遷移でエラーが出ます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。従って情報を開示できることに同意したことになります。選択した項目のみ受け入れる。