swift - Cocoa macOs NSMenu, contextMenu, 右键
问题描述
我在互联网上搜索了所有帖子,但找不到任何可以解决我的问题的 mac 应用程序。当我启动应用程序并右键单击时,不显示 contextMenu。
// MARK: - var
private var selectedPatients: [ArrayPatient] = []
// MARK: - NSMenu
var contextMenu: NSMenu {
let rightClickMenu = NSMenu()
let deleteItem = NSMenuItem()
deleteItem.title = LocalizationUtility.localizedString("title.delete")
deleteItem.target = self
deleteItem.action = #selector(didSelectContextItem(_ :))
deleteItem.tag = 0
let editPatientItem = NSMenuItem()
editPatientItem.title = LocalizationUtility.localizedString("contextMenu.editGroupInfo")
editPatientItem.target = self
editPatientItem.action = #selector(didSelectContextItem(_ :))
editPatientItem.tag = 1
if selectedPatients.count == 1 {
rightClickMenu.addItem(editPatientItem)
}
rightClickMenu.addItem(deleteItem)
return rightClickMenu
}
// MARK: - ContextMenuDelegate
func collectionView(_ collectionView: NSCollectionView, didRightClickItemAt indexPath: IndexPath, with event: NSEvent) {
if let patient = dataSource?[indexPath.item], !selectedPatients.contains(patient as! ArrayPatient) {
self.collectionView(collectionView, didSelectItemsAt: [indexPath])
}
NSMenu.popUpContextMenu(contextMenu, with: event, for: collectionView)
}
@objc func didSelectContextItem(_ sender: NSMenuItem) {
if sender.tag == 0 {
// Delete
if AlertUtility.showConfirmationAlert(withTitle: "alert.deleteGroup") {
deleteObject(selectedPatients)
}
} else if sender.tag == 1 {
// Edit info Group
openEditObjectController(selectedPatients.first)
}
}
解决方案
推荐阅读
- powershell - Powershell Select-Object 像两个值
- laravel - 如何在 vuejs 和 laravel 中循环 api
- c# - DataDog 组跨度
- python - DataFrame - 给定开始日期、结束日期、每天产生的小时数,我如何计算给定月/年产生的小时数?
- python-3.x - 有没有办法解决 pyautogui 像素错误?
- amazon-web-services - true 和 false 结果表达式必须具有一致的类型。给定的表达式分别是字符串和数字的列表
- python-3.x - 将字符串数组转换为由 Numba 加速的二维代码数组
- java - ObjectUtils.defaultIfNull() 用于空检查
- snakemake - 如何使用 Snakemake 进行内存管理?
- javascript - 从两个数组中随机抽样而不用 Javascript 替换