I have a NSTableView
with one column. I would like to print the row number of the row that the user has clicked on. I am not sure where I should start with this. Is there a method for this?
Asked
Active
Viewed 5,170 times
12

Eric Aya
- 69,473
- 35
- 181
- 253

Tom Coomer
- 6,227
- 12
- 45
- 82
2 Answers
16
You can use the selectedRowIndexes
property from the tableView in the tableViewSelectionDidChange
method in your NSTableView delegate.
In this example, the tableView allows multiple selection.
Swift 3
func tableViewSelectionDidChange(_ notification: Notification) {
if let myTable = notification.object as? NSTableView {
// we create an [Int] array from the index set
let selected = myTable.selectedRowIndexes.map { Int($0) }
print(selected)
}
}
Swift 2
func tableViewSelectionDidChange(notification: NSNotification) {
var mySelectedRows = [Int]()
let myTableViewFromNotification = notification.object as! NSTableView
let indexes = myTableViewFromNotification.selectedRowIndexes
// we iterate over the indexes using `.indexGreaterThanIndex`
var index = indexes.firstIndex
while index != NSNotFound {
mySelectedRows.append(index)
index = indexes.indexGreaterThanIndex(index)
}
print(mySelectedRows)
}

Eric Aya
- 69,473
- 35
- 181
- 253
0
Use -selectedRowIndexes
Then you can use those indexes to grab the data from your dataSource
(typically an array)

A O
- 5,516
- 3
- 33
- 68