Macos 如何使用SwiftUI将项目添加到NSToolbar?

Macos 如何使用SwiftUI将项目添加到NSToolbar?,macos,swiftui,nstoolbar,Macos,Swiftui,Nstoolbar,考虑使用应用程序委派生命周期实现的macOS应用程序代码: 应用程序代表: func applicationdFinishLaunching(\u通知:通知){ 让contentView=contentView() window=NSWindow( contentRect:NSRect(x:0,y:0,宽度:480,高度:300), 样式掩码:[.标题、.closable、.Minimable、.Resize、.fullSizeContentView], 备份:。已缓冲,延迟:false) wi

考虑使用应用程序委派生命周期实现的macOS应用程序代码:

应用程序代表:

func applicationdFinishLaunching(\u通知:通知){
让contentView=contentView()
window=NSWindow(
contentRect:NSRect(x:0,y:0,宽度:480,高度:300),
样式掩码:[.标题、.closable、.Minimable、.Resize、.fullSizeContentView],
备份:。已缓冲,延迟:false)
window.toolbar=NSToolbar(标识符:“toolbar”)
window.title=“hello title”
window.subtitle=“你好,subtitle”
window.isReleasedWhenClosed=false
window.center()
window.setFrameAutosaveName(“主窗口”)
window.contentView=NSHostingView(rootView:contentView)
车窗。MakeKeyandDerfront(无)
}
迅捷:

struct ContentView:View{
var body:一些观点{
导航视图{
名单{
导航链接(
目标:ItemView(),
标签:{
标签(“某物”,系统图像:“folder.circle”)
})
导航链接(
目标:ItemView(),
标签:{
标签(“另一个”,系统图像:“铅笔。笔尖。麦田。圆圈”)
})
}.listStyle(SidebarListStyle())
}
.frame(maxWidth:无穷大,maxHeight:无穷大)
.工具栏{
工具栏项{
按钮(操作:{
打印(“点击按钮”)
},标签:{
标签(“你好”,系统图像:“铅笔圈”)
})
}
}
}
}
结构项目视图:视图{
var body:一些观点{
文本(“你好,世界!”)
.frame(maxWidth:无穷大,maxHeight:无穷大)
.工具栏{
工具栏项{
按钮(操作:{
打印(“项目按钮”)
},标签:{
标签(“Itemtool”,系统图像:“lock.doc”)
})
}
}
}
}
其作用:正确设置窗口和工具栏外观。但工具栏并没有按钮。看起来是这样的:

我想做的是:从SwiftUI将工具栏项添加到工具栏

当窗口由SwiftUI应用程序生命周期管理时,一切都按预期进行。但是,出于不相关的原因,我需要坚持应用程序委托生命周期


这可能吗?如何将工具栏按钮从SwiftUI添加到由app delegate创建的窗口工具栏?

在macOS 11 beta 6和Xcode 12 beta 6上:

ContentView:

导入快捷界面
结构ContentView:View{
var body:一些观点{
导航视图{
名单{
导航链接(
目标:ItemView(),
标签:{
标签(“某物”,系统图像:“folder.circle”)
})
导航链接(
目标:ItemView(),
标签:{
标签(“另一个”,系统图像:“铅笔。笔尖。麦田。圆圈”)
})
}.listStyle(SidebarListStyle())
.工具栏{
工具栏项{
按钮(操作:{
打印(“点击按钮”)
},标签:{
标签(“你好”,系统图像:“铅笔圈”)
})
}
}
}
.frame(maxWidth:无穷大,maxHeight:无穷大)
/*进入NavigationView
.工具栏{
工具栏项{
按钮(操作:{
打印(“点击按钮”)
},标签:{
标签(“你好”,系统图像:“铅笔圈”)
})
}
}
*/
}
}
结构项目视图:视图{
var body:一些观点{
文本(“你好,世界!”)
.frame(maxWidth:无穷大,maxHeight:无穷大)
.navigationTitle(“hello title”)//添加标题
.navigationSubtitle(“hello subtitle”)//添加子标题
.工具栏{
工具栏项{
按钮(操作:{
打印(“项目按钮”)
},标签:{
标签(“Itemtool”,系统图像:“lock.doc”)
})
}
}
}
}
您需要为Appdelegate创建一个类:

class AppDelegate:NSObject、NSApplicationDelegate、NSWindowDelegate{
func ApplicationIDFinishLaunching(通知:通知){
//做点什么
}
//其他职能
}
最后:

@main
结构SomeApp:App{
@NSApplicationedLegateAptor(AppDelegate.self)var AppDelegate
var body:一些场景{
窗口组{
ContentView()
}
}
}
结果:


这显示了如何在新的SwiftUI应用程序生命周期中添加工具栏按钮。这对我来说很好。我的问题是如何使用应用程序委托生命周期(没有SomeApp类,没有应用程序子类)。