在
ContentView
中,我们为 NavigationView 设置了一个修饰符,用于检查屏幕是 .compact
还是 .regular
。当我们按下NavigationLink
时,我们进入下一个屏幕。如果我们在 iPad 上开始多任务处理(同时打开 2 个应用程序)并将我们的应用程序屏幕从小变为大,我们就会弹出NavigationLink
。有没有办法防止这种情况。
struct ContentView: View {
@State var isPresented = false
@Environment(\.presentationMode) var presentationMode
var body: some View {
NavigationView {
VStack {
NavigationLink {
Button("Dismiss") {
presentationMode.wrappedValue.dismiss()
}
} label: {
Text("Click me")
}
.navigationTitle("Tab 1")
}
}
.navigationViewStyle(.stack)
.modifier(DummyModifier(isPresented: $isPresented))
}
}
struct DummyModifier: ViewModifier {
@Binding var isPresented: Bool
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
func body(content: Content) -> some View {
Group {
if horizontalSizeClass == .compact {
content
.sheet(isPresented: $isPresented) {
Text("Sheet")
}
} else {
content
.fullScreenCover(isPresented: $isPresented) {
Text("Fullscreen")
}
}
}
}
}