在 SwiftUI 视图中单击按钮时显示 NSMenu
Show NSMenu when clicking on a Button in SwiftUI view
我试图在 SwiftUI 视图中单击按钮时显示 NSMenu,但我正在使用的代码没有显示任何内容。这是:
HStack {
Spacer(minLength: 100)
Button(action: {
let menu = NSMenu()
menu.addItem(
withTitle: "Quit",
action: #selector(NSApp.terminate(_:)),
keyEquivalent: "q")
menu.popUp(
positioning: nil,
at: NSPoint.init(x: 50, y: 50),
in: nil)
}, label: {
Image(systemName: "gear")
})
.buttonStyle(PlainButtonStyle()))
}
什么都没有显示,但我很确定我遗漏了一些重要的东西。
根据评论中vanadian的建议,方法是使用菜单获取结果。我是这样做的:
HStack {
Spacer(minLength: 100)
Menu("") {
Button("Menu.Preferences".localized) {
NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil)
}
Divider()
Button("Menu.Quit".localized) {
NSApp.terminate(self)
}
}
.frame(width: 30)
.menuStyle(BorderlessButtonMenuStyle())
}
这是达到我想要的结果的 SwiftUI 解决方案。
我试图在 SwiftUI 视图中单击按钮时显示 NSMenu,但我正在使用的代码没有显示任何内容。这是:
HStack {
Spacer(minLength: 100)
Button(action: {
let menu = NSMenu()
menu.addItem(
withTitle: "Quit",
action: #selector(NSApp.terminate(_:)),
keyEquivalent: "q")
menu.popUp(
positioning: nil,
at: NSPoint.init(x: 50, y: 50),
in: nil)
}, label: {
Image(systemName: "gear")
})
.buttonStyle(PlainButtonStyle()))
}
什么都没有显示,但我很确定我遗漏了一些重要的东西。
根据评论中vanadian的建议,方法是使用菜单获取结果。我是这样做的:
HStack {
Spacer(minLength: 100)
Menu("") {
Button("Menu.Preferences".localized) {
NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil)
}
Divider()
Button("Menu.Quit".localized) {
NSApp.terminate(self)
}
}
.frame(width: 30)
.menuStyle(BorderlessButtonMenuStyle())
}
这是达到我想要的结果的 SwiftUI 解决方案。