xcodecocoaosx-snow-leopardnstableview

which method is called when selecting a cell in the NSTableView in Cocoa OS X?


I have a NSTableView , i want to get the value present in the cell. I am having only one column so , i just need the row number

i can use this [tableView selectedRow]- but where do i put this i want to put this in a method that gets called on selection of any of the rows.

-(void)tableViewSelectionDidChange:(NSNotification *)notification{

NSLog(@"%d",[tableViewController selectedRow]);

}

The above method also does not work i am getting the error -[NSScrollView selectedRow]: unrecognized selector sent to instance 0x100438ef0]

i want something like the method available in the iPhone tableview-

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {
}

Solution

  • What is tableViewController object? Only NSTableView instances respond to selectedRow. You can get current table view (the one that sent the notification) from notification's object property:

    Objective-C:

    -(void)tableViewSelectionDidChange:(NSNotification *)notification{
        NSLog(@"%d",[[notification object] selectedRow]);
    }
    

    Swift:

    func tableViewSelectionDidChange(notification: NSNotification) {
        let table = notification.object as! NSTableView
        print(table.selectedRow);
    }