SwiftUI实现从Scanner Sheet唤起Support Sheet并支持返回的视图层级
解决方案:实现Sheet嵌套层级返回功能
你的问题出在两个sheet都绑定在主视图上,SwiftUI中同一层级的模态sheet会互相替换,导致打开Support Sheet时Scanner Sheet被关闭。要实现从Support Sheet直接返回Scanner Sheet的需求,只需将Support Sheet的sheet修饰符嵌套在Scanner Sheet的视图内部即可,这样就能形成正确的模态层级。
修改后的代码如下:
@State var qrSheet = false @State var help = false var body: some View { VStack { Button("Dashboard") { qrSheet.toggle() } .sheet(isPresented: $qrSheet) { // Scanner Sheet 内容 VStack { Button("Help") { help.toggle() } } // 将Support Sheet嵌套在Scanner Sheet内部 .sheet(isPresented: $help) { Text("Support") } } } }
效果说明:
- 点击Dashboard按钮打开Scanner Sheet
- 在Scanner Sheet中点击Help按钮,会在当前sheet之上弹出Support Sheet,Scanner Sheet不会被关闭
- 关闭Support Sheet后会直接回到Scanner Sheet,符合需求
内容的提问来源于stack exchange,提问作者Berhtulf
相关产品推荐
相关产品推荐

