在 SwiftUI 中导航到列表视图会立即将列表向上移到屏幕外
Navigating to List View in SwiftUI immediately shifts the list upward offscreen
一个简单的 NavigationLink
到 List
视图给了我以下奇怪的行为。导航成功后,列表突然转移到标题和后退按钮不再出现在屏幕上的地方:
这是代码 (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()
}
}
出现此问题是因为您尝试以 SwiftUI
当前不支持的方式 hide/show NavigationBar
(可能会在下一版本中修复)。
当您尝试使 NavigationBar 在根视图中隐藏并在详细视图中显示时,SwiftUI 中会出现此错误:
编辑
这个错误似乎已在 Xcode 12 beta 中修复。
一个简单的 NavigationLink
到 List
视图给了我以下奇怪的行为。导航成功后,列表突然转移到标题和后退按钮不再出现在屏幕上的地方:
这是代码 (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()
}
}
出现此问题是因为您尝试以 SwiftUI
当前不支持的方式 hide/show NavigationBar
(可能会在下一版本中修复)。
当您尝试使 NavigationBar 在根视图中隐藏并在详细视图中显示时,SwiftUI 中会出现此错误:
编辑
这个错误似乎已在 Xcode 12 beta 中修复。