swiftmacosnscollectionviewitem

NSCollectionViewItem button action No effect


Clicking the button has no effect I hope someone with good intentions can help me see why Below is my code

class cell_word_list_1: NSCollectionViewItem {
    static let item = NSUserInterfaceItemIdentifier(rawValue: "cell_list_id_1")
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func loadView() {
        let rootView = NSView()
        rootView.wantsLayer = true
        rootView.layer?.backgroundColor = #colorLiteral(red: 0.5725490451, green: 0, blue: 0.2313725501, alpha: 1)

        
        let button = NSButton()
        button.frame = NSRect(x: 0, y: 0, width: 100, height: 100)
        button.action = #selector(click)
        
        rootView.addSubview(button)
        self.view = rootView
    }
    @objc func click()  {
        print("------> button click")
    }
    
}

Solution

  • Without a target the action is sent to the first responder and up the responder chain. This doesn't work because the item is not in the responder chain. Solution: set the target of the button:

    button.target = self