swift - 在 macOS 上的 SwiftUI NavigationView 中切换侧边栏
问题描述
我有一个带有 a 的 macOS 应用程序,NavigationView
并且希望在窗口的工具栏中有默认的 ToggleSidebar 项目。
目前我将 ToolbarItem 的目标设置toolbarWillAddItem(_)
为NSToolbarDelegate
.
在我实现的 AppDelegate 内部
@objc func toggleSidebar(_ sender: Any) {
((window.contentView?.subviews.first?.subviews.first?.subviews.first as? NSSplitView)?.delegate as? NSSplitViewController)?.toggleSidebar(self)
}
该解决方案现在正在运行。如果 SwiftUI 的实现会改变这个中断。
那么如何以更好的方式做到这一点呢?
解决方案
从 macOS Big Sur beta 4 开始,您可以使用 SwiftUI 2.0 添加默认侧边栏命令。
var body: some Scene {
WindowGroup {
NavigationView {
Group {
SidebarView()
ContentView()
}
}
}
.commands {
SidebarCommands()
}
}
此代码将添加“切换侧边栏”快捷方式:
侧边栏查看代码:
var body: some View {
List {
ForEach(0..<5) { index in
Text("\(index)")
}
}
.listStyle(SidebarListStyle())
}
推荐阅读
- pdf - 回车前的 ASCII 字符在 PDF 页面中代表什么?
- asp.net-mvc - 如何将缓存更新为 Asp.net 核心中的并发请求?
- python - Tkinter | 将滚动条置于中间
- php - 在不使用表单和会话的情况下将输入值传递到 codeigniter 中的另一个页面
- java - 为什么扫描仪会跳过最后一行?
- php - “试图获取非对象的属性‘名称’
- django - directus 应用程序是否可以在 django 堆栈中用作 CMS
- c# - 在 WPF 中流式传输 Youtube 视频
- java - jstl 日期类型的错误输出
- kotlin - Kotlin Coroutines 依赖进入重载解决歧义