Cocoa macOs NSMenu, contextMenu, right click

230 Views Asked by At

I searched the all posts and around on the internet but couldn't find anything for mac app that could solve my problem. The contextMenu is not displayed when I start the app and right click.

// 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)
        }
    }
0

There are 0 best solutions below