SwiftUI 中.sheet的简单使用

在 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 // 关闭视图的另一种方式
            })
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值