ios - 在 SwiftUI 中导航到列表视图会立即将列表向上移出屏幕
问题描述
一个简单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()
}
}
解决方案
出现此问题是因为您尝试以NavigationBar
当前不支持的方式隐藏/显示SwiftUI
(可能会在下一个版本中修复)。
当您尝试将 NavigationBar 隐藏在根视图中并显示在详细视图中时,SwiftUI 中会出现此错误:
编辑
似乎这个错误已在 Xcode 12 beta 中修复。
推荐阅读
- .net-core - .NET Core 3.1.x 的更高版本是否向后兼容相同的主要和次要版本?
- visual-studio-code - 为什么tasks.json:文件格式无法识别
- cucumber - 使用 rubymine 工具运行程序时出现格式化程序错误
- firebase - 是否可以增加云功能容器的生命周期?
- reactjs - Redux 状态在所有选项卡中并不统一
- javascript - 将值从 JavaScript 传递到 Django
- c++ - ld:找不到 -lstdc++fs 的库 Clang:错误:链接器命令失败,退出代码为 1
- latex - 如何在 twocolumn 类中将 tabularx 表转换为 longtable?
- c# - 如何在 blazor 中刷新页面重置值?
- salesforce - Apex 基础知识 - 关于代码覆盖率的快速问题