尝试弹出到SwiftUI中不存在的视图控制器

时间:2019-11-06 19:53:42

标签: 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")
    }
}

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

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

1 个答案:

答案 0 :(得分:1)

尽管您未指定,但我假设您的FFTabView包裹在NavigationView中。

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

NavigationView {
    TabView {
        NavigationLink {
            ...
        }
    }
}

如果您重构视图层次结构,就像

TabView {
    NavigationView {
        NavigationLink {
            ...
        }
    }
}

崩溃不会发生。

编辑: 我已经确认它与Xcode 11.2中引入的this answer中讨论的回归/错误有关。您的原始代码在Xcode 11.1中可以正常工作。