在 SwiftUI 中,使用 .sheet
显示视图时,可以通过状态变量来控制视图的显示和隐藏。
onDismiss
在视图关闭时执行某些操作。
struct CatView: View {
@State private var showSheet = false // 控制视图的显示状态
@State private var message = "" // 用于显示的信息
var body: some View {
VStack {
Button(action: {
showSheet.toggle() // 切换视图的显示状态
}) {
Text("点击跳转sheet")
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
Text(message) // 显示从视图返回的信息
.padding()
}
.sheet(isPresented: $showSheet, onDismiss: {
// 在视图关闭时执行的操作
message = "Sheet was dismissed!"
}) {
SheetView(showSheet: $showSheet) // 传递状态变量
}
}
}
struct SheetView: View {
@Binding var showSheet: Bool // 接收外部的状态变量
var body: some View {
NavigationView {
VStack {
Text("This is a sheet view.")
.font(.largeTitle)
.padding()
Button("Close sheet") {
showSheet = false // 通过修改状态变量来关闭视图
}
}
.navigationBarTitle("Sheet", displayMode: .inline)
.navigationBarItems(trailing: Button("Close sheet") {
showSheet = false // 关闭视图的另一种方式
})
}
}
}