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)
}