Вместо того, чтобы просто передавать содержимое в ToolbarTabView, вы можете получить массив, который также содержит другие значения. Попробуйте что-то вроде этого:
struct ToolbarTabView<Content>: NSViewControllerRepresentable where Content: View {
let tabs: [(imageName: String, label: String, identifier: Int, content: () -> Content)]
init(tabs: [(imageName: String, label: String, identifier: Int, content: () -> Content)]) {
self.tabs = tabs
}
func makeNSViewController(context: NSViewControllerRepresentableContext<ToolbarTabView>) -> NSTabViewController {
let vc = NSTabViewController()
vc.tabStyle = .toolbar
for item in tabs {
let t = NSTabViewItem(viewController: NSHostingController(rootView: item.content()))
//t.image = item.image
t.label = item.label
t.identifier = item.identifier // this causes an "unrecognized selector" error, but maybe I'm passing a bad value for this, I'm not sure what it expects
vc.addTabViewItem(t)
}
return vc
}
func updateNSViewController(_ nsViewController: NSTabViewController, context: NSViewControllerRepresentableContext<ToolbarTabView>) {
}
typealias NSViewControllerType = NSTabViewController
}
struct ToolbarTabView_Previews: PreviewProvider {
static var previews: some View {
ToolbarTabView(tabs: [
(
imageName: "My Image",
label: "tab1",
identifier: 0,
content: {
Text("testing")
}
)
])
}
}