隐藏切换侧边栏按钮导航SplitView macOS

10
在WWDC 2022中,苹果推出了NavigationSplitView,这是NavigationView的一个替代品。一切都很好,直到我遇到一个问题:我不知道如何隐藏切换侧边栏按钮。 我想要的效果(就像邮件应用程序一样,没有侧边栏按钮):

我的代码和结果(我在项目中没有添加任何关于侧边栏按钮的代码):
struct ContentView: View {
    @State private var selection: Int = 1
    @State private var search: String = ""
    
    @State private var columnVisibility = NavigationSplitViewVisibility.all
    
    var body: some View {
        NavigationSplitView(columnVisibility: $columnVisibility) {
            Sidebar(selection: $selection)
        } content: {
            Content(selection: $selection)
        } detail: {
            DetailView(selection: $selection)
        }
        .searchable(text: $search) {
            
        }
    }
}

有没有办法把它隐藏起来?非常感谢你能提供的任何帮助。

只需添加 .toolbar { ToolbarItem { Image(systemName: "plus") } } - Nhat Nguyen Duc
也许它正在使用NavigationView,而不是NavigationSplitView或NavigationStack。有方法可以隐藏整个工具栏。但我也没有找到隐藏按钮的方法。 - chunyang.wen
也许是使用了NavigationView,而不是NavigationSplitView或NavigationStack。有方法可以隐藏整个工具栏。但我也没有找到隐藏按钮的方法。 - undefined
1个回答

4
这在XCode版本15.0 beta 6 (15A5219j)中现在是可能的。
要隐藏“隐藏/显示侧边栏”按钮,请在侧边栏的视图中添加`.toolbar(removing:)`,并使用`ToolbarDefaultItemKind`值为`.sidebarToggle`。
NavigationSplitView(
  sidebar: {
    <#T##SomeSidebarView#>
      .toolbar(removing: .sidebarToggle)
  },
  detail: {
    <#T##SomeDetailView#>
  }
)

.toolbar(removing: .sidebarToggle)的作用是隐藏切换按钮,但功能仍然存在。我仍然可以通过拖动分隔条来隐藏侧边栏,并且在隐藏后无法重新打开它。有没有办法同时禁用隐藏侧边栏的功能和隐藏切换按钮? - undefined
@Pytan Apple尚未公开暴露禁用SwiftUI子视图折叠的底层SplitViewDelegate方法。有些人使用SwiftUI-Introspect包成功实现了此功能,但效果因人而异。我建议您在“反馈助手”中向SwiftUI团队提出功能请求。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接