【SwiftUI】シンプルな画面遷移をしてみる2

swift
  • 前回の画面遷移はナビゲーション遷移を行ったが、今回はモーダル遷移をやってみる。モーダル遷移にはフルモーダルとハーフモーダルの2種類ある。

まずはハーフモーダル、

ハーフモーダルを表示する場合は、sheetモディファイアを利用します。

sheetのisPresentがtrueの場合に、halfViewが表示されると言う仕組みになります。

//
//  ContentView.swift
//  Test
//
//  Created by yuki on 2023/09/17.
//

import SwiftUI

struct ContentView: View {
    
    @State var modalFlg = false
    
    var body: some View {
        Button {
            // ボタンタップごとに表示非表示の切り替えを行う。
            modalFlg.toggle()
        } label: {
            Text("初期画面")
        }
        .sheet(isPresented: $modalFlg) {
            halfView()
        }
    }
}

struct halfView: View {
    // 現在のプレゼンテーションを破棄
    @Environment(\.dismiss) private var dm
    
    var body: some View {
        NavigationView {
            ZStack{
                Button {
                    dm()
                } label: {
                    Text("ハーフモーダル")
                        .foregroundColor(.black)
                }
                
            }
        }
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

初期画面のボタンをタップすると、以下の通りになります。

スワイプとボタンタップでモーダルを閉じることができます。

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