SwiftUI——消失当前界面/View(dismiss View)

本文介绍了在SwiftUI中关闭当前界面的方法,通过@Environment(.presentationMode)获取展示模式,并调用dismiss()方法实现。适用于NavigationView或Alert、Sheet等场景,但要注意dismiss()只会关闭最上层的界面。文中还提供了一个NavigationLink二级界面关闭的示例代码,帮助开发者更好地理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候我们需要让当前界面消失,可以使用以下方法:
首先声明一下显示模式:

@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

然后在action区域使用:

self.presentationMode.wrappedValue.dismiss()

不过这种方法需要注意几点:

  • 消失整个界面的时候,只能引出来的界面(例如NavigationView或者弹出的Alert、Sheet、Popover),不然.presentationMode.wrappedValue.isPresented的值是false,自然无法dismiss()
  • 弹出的Alert、Sheet或者Popover之类的,使用这个方法消失的是激活弹出的那个界面,而不是弹出之后的界面。

为了方便理解,下面来举个例子,假设下面这是个NavigationLink出来的二级界面,我们想让当前界面消失,就使用以下代码:

struct DismissView: View {
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    
    var body: some View {
        VStack {
            Text("第二个界面")
            Button(action: {
                self.presentationMode.wrappedValue.dismiss()
            }, label: {
                Text("消失")
            })
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值