dismissによってウインドウやプレゼンテーションを閉じるには?

この記事は約3分で読めます。

dismissは、現在表示されているモーダルビューやシートをプログラム的に閉じるために使用されます。ユーザーが手動で閉じるのではなく、特定の条件やアクションによってビューを閉じる必要がある場合などにも便利です。

  • iOS:15.0以上
  • XCode(当サイトの環境):15.0.1

基本的な使い方

dismissメソッドは@Environmentプロパティラッパーを使って取得します。
具体的な使い方は以下の通りです。

サンプルコード

import SwiftUI

struct DismissSmp: View {
    @State private var isSheetPresented = false

    var body: some View {
        Button("Show Sheet") {
            isSheetPresented.toggle()
        }
        .sheet(isPresented: $isSheetPresented) {
            DismissSmp_SheetView()
        }
    }
}

struct DismissSmp_SheetView: View {
    @Environment(\.dismiss) private var dismiss

    var body: some View {
        Text("This is a sheet")
        Button("Dismiss") {
            dismiss()
        }
    }
}

コードの解説

@Stateプロパティの定義:

  • isSheetPresentedはシートが表示されるかどうかを制御します。

Buttonによるシートの表示:

  • ボタンがタップされると、isSheetPresentedの値がトグルされ、シートが表示されます。

DismissSmp_SheetView:

  • DismissSmp_SheetView内では、@Environment(\.dismiss)を使ってdismissメソッドを取得します。
  • ボタンがタップされると、dismissメソッドが呼ばれ、シートが閉じられます。

使用例

dismissメソッドは以下のような状況で使用されます。

フォームの送信後にシートを閉じる

入力フォームをモーダルで表示し、送信後に自動的に閉じる。

エラーメッセージ表示後に閉じる

エラーメッセージをモーダルで表示し、確認ボタンを押した後に閉じる。

ナビゲーションの遷移後に閉じる

新しい画面に遷移した後、元のモーダルビューを閉じる。

注意点

  • dismissはモーダルビューやシートに対して有効:通常のプッシュナビゲーションやタブビューの切り替えには使用できません
  • @Environmentでの取得@Environment(\.dismiss)でプロパティとして取得し、ビュー内で呼び出す必要があります

まとめ

dismissメソッドは、SwiftUIにおけるモーダルビューやシートをプログラム的に閉じるための便利な方法です。
ユーザー体験を向上させ、特定のアクション後にビューを自動的に閉じる際に役立つのではないでしょうか。使い方を理解して、適切なタイミングでビューを閉じることで、アプリの操作性を向上させることができます。

タイトルとURLをコピーしました