在导航 Link 为 Mac OS 选择 SwiftUI 之前,详细视图部分可见
Detail View partly visible before Navigation Link selected SwiftUI for Mac OS
我在 SwiftUI MacOS (Catalina) 中使用 NavigationView,由于某种原因,在实际选择 NavigationLink 之前,详细视图及其分隔线部分可见。理想情况下,我希望在选择列表中的某些内容之前隐藏详细信息视图。
我已经在所有视图上尝试了 minWidth 的各种组合,但无法正确查看:
这是我的主要观点:
var body: some View {
VStack {
NavigationView {
List(networkManager.FileList!.items) { file in
NavigationLink(destination: FileDetail(fileDetail: file)) {
FileRow(fileRow: file)
}
}
}.frame(minHeight:300).background(Color.white)
}
}
这是我的行视图:
var fileRow: Item
var body: some View {
VStack(alignment: .leading) {
HStack {
Text(fileRow.name).font(Font.system(size: 12, weight: .regular, design: .default))
Text(fileRow.path).font(Font.system(size: 12, weight: .regular, design: .default))
}
}
}
这是我的详细视图:
var fileDetail: Item
var body: some View {
HStack {
VStack {
Text(fileDetail.name).font(.title)
Text(fileDetail.created).font(Font.system(size: 12, weight: .regular, design: .default))
}.background(Color.white).frame(minWidth:250, idealWidth:300, maxHeight: .infinity)
}
}
编辑:
查看调试视图层次结构,看起来空视图是为 DetailView 创建的,view.width 为 10:
在 macOS NavigationView
上有 master/details 风格,所以即使没有提供细节,它也会添加一些隐含的内容。
这是可能的解决方案。
并非所有提供的依赖实体都在某些复制代码上进行了测试。 Xcode 11.4 / macOS 10.15.5.
var body: some View {
VStack {
NavigationView {
List(items) { file in
NavigationLink(destination: FileDetail(fileDetail: file)) {
FileRow(fileRow: file)
}
}
// add explicit stub view for details pane
// on no selection with zero width
Rectangle().frame(maxWidth: 0, maxHeight: .infinity)
}.frame(minHeight:300).background(Color.white)
}
}
我在 SwiftUI MacOS (Catalina) 中使用 NavigationView,由于某种原因,在实际选择 NavigationLink 之前,详细视图及其分隔线部分可见。理想情况下,我希望在选择列表中的某些内容之前隐藏详细信息视图。
我已经在所有视图上尝试了 minWidth 的各种组合,但无法正确查看:
这是我的主要观点:
var body: some View {
VStack {
NavigationView {
List(networkManager.FileList!.items) { file in
NavigationLink(destination: FileDetail(fileDetail: file)) {
FileRow(fileRow: file)
}
}
}.frame(minHeight:300).background(Color.white)
}
}
这是我的行视图:
var fileRow: Item
var body: some View {
VStack(alignment: .leading) {
HStack {
Text(fileRow.name).font(Font.system(size: 12, weight: .regular, design: .default))
Text(fileRow.path).font(Font.system(size: 12, weight: .regular, design: .default))
}
}
}
这是我的详细视图:
var fileDetail: Item
var body: some View {
HStack {
VStack {
Text(fileDetail.name).font(.title)
Text(fileDetail.created).font(Font.system(size: 12, weight: .regular, design: .default))
}.background(Color.white).frame(minWidth:250, idealWidth:300, maxHeight: .infinity)
}
}
编辑:
查看调试视图层次结构,看起来空视图是为 DetailView 创建的,view.width 为 10:
在 macOS NavigationView
上有 master/details 风格,所以即使没有提供细节,它也会添加一些隐含的内容。
这是可能的解决方案。
并非所有提供的依赖实体都在某些复制代码上进行了测试。 Xcode 11.4 / macOS 10.15.5.
var body: some View {
VStack {
NavigationView {
List(items) { file in
NavigationLink(destination: FileDetail(fileDetail: file)) {
FileRow(fileRow: file)
}
}
// add explicit stub view for details pane
// on no selection with zero width
Rectangle().frame(maxWidth: 0, maxHeight: .infinity)
}.frame(minHeight:300).background(Color.white)
}
}