SwiftUI

【SwiftUI】Sheetの使い方

Sheetの基本的な表示の仕方を紹介します。
今回はString型を渡す例です。

struct SheetView:View{
    @Binding var sheetText:String
    var body: some View{
        Text("文字を入力")
        TextField("",text:$sheetText)
            .textFieldStyle(RoundedBorderTextFieldStyle())
    }
}

struct ContentView: View {
    @State var showingSheet = false
    @State var sheetText = ""
    var body: some View {
        
        VStack{
            Button(action: {
                self.showingSheet = true
                
            }, label: {
                Text("Sheetを表示する")
            })
            Text("text:\(sheetText)")
            
        }.sheet(isPresented: $showingSheet){
            SheetView(sheetText: $sheetText)
        }
    }
}

上記のコードではSheet上でに入力した文字が最初の画面に表示されるようになります。

@State var showingSheet = false
//Buttonを押下した際にtrueになるようになってます。
Button(action: {
                self.showingSheet = true
                
}

//$showingSheetがtrueの時にSheetViewが表示されます。
.sheet(isPresented: $showingSheet){
            SheetView(sheetText: $sheetText)
}

Sheetが閉じた際に処理を走らせたい場合

//sheet上で入力した文字列にtestを追加するだけのサンプル
func onDismissSample(){
        sheetText = sheetText + "test"
}
//onDismissにfuncを指定
.sheet(isPresented: $showingSheet, onDismiss: onDismissSample){
            SheetView(sheetText: $sheetText)
}
//もしくは直接記述することもできます。
sheet(isPresented: $showingSheet, onDismiss:{sheetText = sheetText + "test2"}){
            SheetView(sheetText: $sheetText)
}

-SwiftUI
-,

© 2024 swift技術ブログ Powered by AFFINGER5