试图弹出一个在 SwiftUI 中不存在的视图控制器

Zac*_*iro 7 ios swift swiftui

我的 SwiftUI 应用程序上非常正常的导航发生了奇怪的崩溃

我有一个简单的选项卡视图:

struct FFTabView: View {
    var body: some View {
        TabView {
            LibraryView2()
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarHidden(true)
        .navigationBarTitle("", displayMode: .inline)
    }
}

// MARK: -

struct LibraryView2: View {

    var body: some View {
        VStack {
            NavigationLink(destination: Foo()) {
                Text("go to foo")
            }
        }
        .tabItem {
            Image(systemName: "square.grid.2x2.fill")
            Text("Skill Library")
        }
    }

}

struct Foo: View {
    var body: some View {
        Text("foo view")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我通过导航栏返回时,Foo我遇到了崩溃:Tried to pop to a view controller that doesn't exist

知道这里发生了什么吗?我找不到与此和 SwiftUI 相关的任何内容,所以我想我会发布。谢谢

Joh*_* M. 5

虽然您没有指定,但我认为您FFTabView的包裹在NavigationView某个地方。

最终,您的视图层次结构看起来像

NavigationView {
    TabView {
        NavigationLink {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你重组你的视图层次结构,就像

TabView {
    NavigationView {
        NavigationLink {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

崩溃不会发生。

编辑: 我已经确认它与这个答案中讨论的回归/错误有关,在 Xcode 11.2 中引入。您的原始代码在 Xcode 11.1 中运行良好。