問題描述
在具有可編輯列順序的 NSTableView 中獲取列 (Getting a column in an NSTableView with editable column order)
我有一個 NSTableView
,如果用戶單擊“ClickMe”列,我希望收到通知。我將整個表格視圖鏈接到一個可以提取 clickedColumn:
的方法,但我得到的是一個絕對數字,而不是對“ClickMe”列的引用(它可能已被移動到另一個地方)。
我當然可以編寫自己的搜索算法來查看列 X 是否實際上是“Clickme”列,但這不會很優雅。有沒有辦法正確識別列並以編程方式接收該 ID?
參考解法
方法 1:
What about querying NSTableView's columnAtPoint: in your table views mouseDown: or mouseUp: method?
方法 2:
I found a way to do my own search in a fairly fast way, but I still have a feeling I am putting too much effort in this:
First, set the Identifier of the desired column in the Interface Builder to "ClickMeColumn". Then:
NSInteger cmColumn = [tableView columnWithIdentifier:@"ClickMeColumn"];
if ( [tableView clickedColumn] == cmColumn )
NSLog(@"Clicked me!");
I am looking for something along the lines of [tableView clickedColumnIdentifier]
.
方法 3:
Use any of the methods below. Called by the tableView's delegate on selection. You can extract the identifier and the title string from the relevant tableColumn.
‑ (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn {
NSLog(@"tableView:didClickTableColumn: %@, titleString: %@", [tableColumn identifier], [[tableColumn headerCell] stringValue]);
}
‑ (void)tableView:(NSTableView *)tableView mouseDownInHeaderOfTableColumn:(NSTableColumn *)tableColumn {
NSLog(@"tableView:mouseDownInHeaderOfTableColumn: %@, titleString: %@", [tableColumn identifier], [[tableColumn headerCell] stringValue]);
}
(by Carelinkz、iljawascoding、Carelinkz、user899145)