我有一个简单的主应用程序架构:
struct ContentView: View {
@State private var isSignedIn = false
@AppStorage("onboardingCompleted") var onboardingCompleted: Bool = false
var body: some View {
Group {
if onboardingCompleted && isSignedIn {
MainView()
} else {
OnboardingView()
}
}
.onAppear() {
signIn()
}
}
OnboardingView 是一个导航视图。 MainView 是一个 TabView。当用户完成入职后,我会在这些之间进行切换。但是,当用户在最后一个入门步骤中点击“完成”按钮时,这会被写入控制台:
Trying to pop to a missing destination - SwiftUI/NavigationBridge_PhoneTV.swift:213 - please file a bug report.
在生产中,这会导致崩溃。我环顾四周,当您将 TabView 嵌入到 NavigationView 中时,似乎这是一个问题,反之亦然?但这里的情况并非如此,它们是独立的,我在它们之间切换。
有什么想法吗?
SwiftUI 不允许你调用视图作为函数,把 UIView 放在 UIHostingController 中就可以调用它了!
func CallLogInSheet() {
let vc = UIHostingController(rootView: signIn())
vc.modalPresentationStyle = .fullScreen
UIApplication.shared.windows[0].rootViewController?.present(vc, animated: true)
}