Search code examples
cocoanstableviewcocoa-bindingsnsbuttonnstableviewcell

NSButton in NSTableCellView: How to find desired objectValue?


I have a view-based NSTableView that is populated through bindings. My textFields & imageViews are bound to the NSTableCellView's objectValue's properties.

If I want to have an edit/info button in my NSTableCellView:

  1. Who should be the target of the button's action?

  2. How would the target get the objectValue that is associated with the cell that the button is in?

I'd ultimately like to show a popover/sheet based on the objectValue.


Solution

  • Your controller class can be the target. To get the object value:

    - (IBAction)showPopover:(id)sender {
        NSButton *button = (NSButton *)sender;
        id representedObject = [(NSTableCellView *)[button superview] objectValue];
    }
    

    Or, use a subclass of NSTableCellView, make the cell view the target of the button's action, and call [self objectValue] to get the object.