【问题标题】:SwiftUI: How to change visibility of details NavigationSplitView?SwiftUI:如何更改细节 NavigationSplitView 的可见性?
【发布时间】:2022-12-23 19:31:11
【问题描述】:

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

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

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

 }

苹果忘记实现这样的功能了吗? :/

【问题讨论】:

  • 我认为这种设计在 Apple 平台上并不常见;大多数应用程序只使用一个空的详细信息页面。例如,笔记应用程序的详细信息部分在没有笔记时为空白:imgur.com/bhu0RPT

标签: macos swiftui


【解决方案1】:

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

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

在任何情况下,即使这不是逻辑,使“详细信息”部分可隐藏的方法是通过使用 NavigationSplitView 实现两列导航并添加 DetailView,将所有这些包含在 @987654324 中@ 并使 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")
        }
    }
}

}

【讨论】:

    猜你喜欢
    • 2012-09-22
    • 2023-04-09
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2014-04-19
    • 2013-10-31
    相关资源
    最近更新 更多