MENU

【SwiftUI】@Environment(\.dismiss)で任意の”戻るボタン”を使う

通常、画面遷移を行ったときは以下のようなBackボタンになっていますが、


@Environment(\.dismiss)を用いることで以下のような任意の戻るボタンにできます。

遷移前のViewで.navigationBarBackButtonHidden(true)をつけて、元々あるBackボタンを消す。

TestView()
    .navigationBarBackButtonHidden(true)

遷移後のViewで@Environment(.dismiss) var dismissを宣言。

@Environment(\.dismiss) var dismiss

遷移後のViewで.onTapGestureでdismiss()を実行。

.onTapGesture {
    dismiss()
}

以下が全体のソースコードです。

struct ContentView: View {
    var body: some View {
        NavigationStack {
            NavigationLink {
                TestView()
                    .navigationBarBackButtonHidden(true)
            } label: {
                Text("TestViewへ")
            }
        }
    }
}

struct TestView: View {
    @Environment(\.dismiss) var dismiss
    
    var body: some View {
            VStack {
                Text("TestView")
            }
            .toolbar {
                ToolbarItem(placement: .navigationBarLeading) {
                    Image(systemName: "chevron.left")
                        .onTapGesture {
                            dismiss()
                        }
                }
            }
    }
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

iosエンジニア
読書、散歩、サッカーが好きです。

コメント

コメントする

CAPTCHA


このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次