首页 > 解决方案 > 在 SwiftUI 中导航到列表视图会立即将列表向上移出屏幕

问题描述

一个简单NavigationLinkList视图给了我以下奇怪的行为。导航成功后,列表突然切换到标题和后退按钮不再出现在屏幕上的位置:

奇怪行为的屏幕截图

这是代码(Xcode 11.5)。知道发生了什么吗?

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: ListView()) {
                Text("Go to List View ›")
            }.navigationBarTitle("").navigationBarHidden(true)
        }
    }
}

struct ListView: View {
    var body: some View {
        List {
            ForEach(0 ..< 3) { person in
                HStack {
                    Image(systemName: "person.crop.circle.fill")
                        .resizable().frame(width: 80, height: 80)
                    Text("User \(person+1)")
                }
            }
        }.listStyle(GroupedListStyle())
            .navigationBarTitle("List")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

标签: ioslistscrollnavigationswiftui

解决方案


出现此问题是因为您尝试以NavigationBar当前不支持的方式隐藏/显示SwiftUI(可能会在下一个版本中修复)。

当您尝试将 NavigationBar 隐藏在根视图中并显示在详细视图中时,SwiftUI 中会出现此错误:

编辑

似乎这个错误已在 Xcode 12 beta 中修复。


推荐阅读