UIでnavigationViewの戻るボタンを実装する際に使用するdismissの使い方と注意点をまとめていきます。以下の記事を参考にしてください。おすすめ記事:【SwiftUI】NavigationViewの使い方!戻るボタンの自作方法dismissとは?dismissはNavigationView内でNavigationLinkで遷移したビューから戻る処理を実装するために使用できるプロパティです。dismissを翻訳すると「却下」や「解散」などの意味になります。dismiss自体はロケールやカラースキームなどの環境値を保持するEnvironmentValues構造体のインスタンスプロパティとして定義されています。}DismissAction構造体とは?dismissプロパティにはDismissAction構造体が格納されます。dismiss自体は単なるプロパティ名であり正体はDismissAction構造体ということになります。DismissAction構造体はインスタンスかされる際に暗黙的に自身が持つcallAsFunctionメソッドを呼び出し実行します。このメソッドが現在表示されているビューを閉じるメソッドになるようです。公式リファレンス:callAsFunctionメソッド使い方dismissを使用する方法をみていきます。使用用途は「NavigationLinkで遷移したビューから戻る処理を実装」する際です。環境値を保持するEnvironmentValues構造体の値は@Environment(\.プロパティ名)で取得できます。}階層になっている場合のdismissビュー構造が「親ビュー>子ビュー>子ビュー2」のように階層になっている場合でもdismissは正常に動作します。この場合はアクティブになっているビューのみが閉じられていきます。孫Viewから親に一気に戻りたい場合は最適なメソッドはまだ用意されていなさそうでした。実装するならonDisappearを使用して孫Viewが閉じられた時に子Viewも閉じることで親Viewまで一気に戻ることが可能です。この方法だと一瞬子ビューが見えてしまうので最適な方法とは言えなさそうです。}}解決策isDetailLinkを使用することで孫Viewから親まで一気に戻ることができるように実装できるみたいです。ロジックとしては親に@Stateで変数を用意しておきその変数を@Bindingで孫まで繋いで、孫からその変数を操作する方法でした。この際に中間のナビゲーションページにはisDetailLinkを付与しないと動作しないようです。おすすめ記事:Github-SwiftUIで初めの画面に遷移するデータを編集&dismissで戻るが実装できない?先ほどの階層構造で問題なく動作したdismiss処理ですが、思うように動作しないこともありました。遷移するページで、編集ボタンをクリック後に元データを編集後、詳細画面に戻る流れを期待して作成しています。編集画面しかし上記のようなビュー構造の際に子ビュー2側で「更新(dismissを含んだ更新&戻る)ボタン」を実装した場合、子ビュー2でクリックすると親ビュー(リスト画面)まで戻ってしまいます。デフォルトで実装される「戻るボタン」なら期待通りの遷移をしますが、dismissを使用したボタンの場合は期待通りに動きませんでした。以下にコードを載せておきます。「編集ページ」から編集後に「詳細ページ」へ戻るためにアラートを使用することで解決できました。Alert(title:Text("更新しました。}}まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。ご覧いただきありがとうございました。13対応まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。ご覧いただきありがとうございました。友達や家族の誕生日を登録しておくと当日に通知が届きお知らせしてくれるiOSアプリです。貸し借り管理アプリお金の貸し借りを管理するためのアプリです。貸借の色が分かれているので識別しやすく、使いやすさを求めてできるだけシンプルなUIにしています。カシホン人に貸すことが多く、誰に貸したか忘れがちな本の貸し借りを記録できるアプリです。