下記のサンプルコードを見てらえるとわかりますが、Table ViewのActionをclickという名前で追加しています。
引数はNSTableViewにしないとクリックされたセルの位置が分かりません。
やることは簡単なのですが、クリックされた行と列の位置を取得して、データの行(カラムのヘッダーは行が-1です)か、URLの入った列かをチェックして
その上でURLを取得して、NSWorkspace.shared.open()で開きます。
@IBAction func click(_ sender: NSTableView) {
let iRow = sender.clickedRow
let iCol = sender.clickedColumn
//URLの入っているカラムかをチェックする。
if iCol != COL_URL {
return
}
//カラムのヘッダーをクリックされるとiRowは-1になるので。
if iRow < 0 {
return
}
//URLをクリックされたら、デフォルトのブラウザで開く処理
//myListは、構造体のリストでプロパティにurlを持っています。
//このやり方だとTable Viewがソートされていると上手くいかないです。
let tempUrl: String = self.myList[iRow].url
let myUrl = URL(string: tempUrl)!
if iCol == COL_URL {
//デフォルトのブラウザで開きます。
NSWorkspace.shared.open(myUrl)
}
}
