我正在使用 SwiftUI 创建 macOS 应用程序,并使用
NavigationSplitView
创建三列布局。似乎侧边栏(或第一列或前导列)默认可以隐藏。我也希望能够选择隐藏详细信息列(或第三列或尾随列),我在许多 macOS 应用程序中都看到过这种情况(甚至在 Xcode 本身中)。NavigationSplitView
配置来隐藏侧边栏或侧边栏+内容列,但没有详细信息列。
这是我当前的代码,我在其中创建了一个隐藏详细视图内容的工具栏按钮:
import SwiftUI
struct NavigationView: View {
@State private var detailViewVisible: Bool = true
var body: some View {
NavigationSplitView {
Text("Sidebar")
} content: {
Text("Content")
} detail: {
if detailViewVisible {
Text("Detail")
} else {
EmptyView()
}
}
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button(action: {
detailViewVisible.toggle()
}) {
Image(systemName: "sidebar.right")
}
}
}
}
}
这会清空详细视图列的内容,但列本身仍然保留。
我还尝试将该列的
width
设置为 0
,这似乎也没有任何作用。
这对我有用(需要 macOS 13 或更高版本):
NavigationSplitView {
Text("Sidebar")
} content: {
Text("Content")
} detail: {
if detailViewVisible {
Text("Detail")
} else {
Spacer()
.navigationSplitViewColumnWidth(0)
}
}