SwiftUI:如何更改细节 NavigationSplitView 的可见性?

Dan*_*iel 7 macos swiftui

我想NavigationSplitView在 macOS 上隐藏/显示 a 的详细信息拆分视图。

不过NavigationSplitViewVisibility似乎没有这样的选择。更改.navigationSplitViewColumnWidth().frame()对详细信息视图没有影响,尽管它适用于内容和列表视图。

 NavigationSplitView {
            List(selection: $selection)
        } content: {
            content(for: selection)
        } detail: {
            Text("Detail")

 }
Run Code Online (Sandbox Code Playgroud)

苹果是否忘记实现这样的功能?:/

hkd*_*lex 3

试图为自己找出同一问题的答案,我得出了这样的结论:

ANavigationSplitView旨在显示一个层次结构,其中每个下一个级别(侧边栏、内容、详细信息)都是前一个级别的子级别。在这样的结构中,您可能总是希望显示详细视图,即使它是空的。

在任何情况下,即使这不是逻辑,使“详细”部分隐藏的方法是通过实现两列导航并添加NavigationSplitViewa DetailView,将所有这些包含在 an 中HStack并使DetailView可见性成为有条件的:

struct MyView: View {

@State var showingDetail: Bool = true

var body: some View {
    HStack {
        NavigationSplitView {
            SidebarView()
        } detail: {
            ContentView()
        }

        if  showingDetail {
            DetailView()
        }
    }
    .toolbar {
        Toggle(isOn: $showingDetail) {
            Image(systemName: "sidebar.trailing")
        }
        .toggleStyle(.button)
    }
}
Run Code Online (Sandbox Code Playgroud)

}