是因为NavigationView在弹出窗口显示时会自动隐藏导航栏,导致弹出窗口无法正常显示。解决这个问题的方法是使用一个自定义的NavigationView,将弹出窗口嵌套在自定义的NavigationView内部。
自定义NavigationView的代码示例:
struct CustomNavigationView<Content: View>: View {
let content: Content
init(@ViewBuilder content: () -> Content) {
self.content = content()
}
var body: some View {
#if os(iOS)
NavigationView {
content
}
#else
content
#endif
}
}
使用自定义NavigationView的示例:
struct ContentView: View {
@State private var isShowingPopup = false
var body: some View {
CustomNavigationView {
VStack {
Text("Hello, World!")
.padding()
Button("Show Popup") {
isShowingPopup = true
}
.padding()
.sheet(isPresented: $isShowingPopup) {
PopupView()
}
}
}
}
}
struct PopupView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Popup Content")
.padding()
Button("Close") {
presentationMode.wrappedValue.dismiss()
}
.padding()
}
}
}
在上述示例中,我们使用自定义的NavigationView来包裹整个视图,并在其中嵌套了弹出窗口。这样做可以确保弹出窗口在NavigationView内部正常显示,而不会消失。
对于SwiftUI弹出窗口在NavigationView内时消失的问题,腾讯云并没有特定的产品或解决方案与之相关。但腾讯云提供了丰富的云计算服务和解决方案,可满足各种应用场景的需求。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多相关信息。
领取专属 10元无门槛券
手把手带您无忧上云