2012-06-26 17 views
0

我有一個NSTableView,我希望在用戶單擊「ClickMe」列時收到通知。我將整個表格視圖鏈接到一個可以提取clickedColumn:的方法,但是我得到一個絕對編號,而不是對「ClickMe」列(可能已被移動到另一個地方)的引用。以可編輯的列順序獲取NSTableView中的列

我當然可以編程我自己的搜索算法,看看列X實際上是「Clickme」列,但這不會很優雅。有沒有辦法正確識別列,並以編程方式接收該ID?

回答

0

我找到了一種方法做我自己在一個相當快速的方式搜索,但我仍然有一種感覺,我把太多精力在這:

首先,設置所需的列的標識符的接口生成器到「ClickMeColumn」。然後:

NSInteger cmColumn = [tableView columnWithIdentifier:@"ClickMeColumn"]; 
if ([tableView clickedColumn] == cmColumn) 
     NSLog(@"Clicked me!"); 

我要找沿[tableView clickedColumnIdentifier]線的東西。

0

如何查詢NSTableView的columnAtPoint:在您的表視圖mouseDown:或mouseUp:方法?

+0

不,我不想要一個指數,我想一個UID。因爲#6列可能會或可能不是正確的,這取決於我的「ClickMe」列的位置。例如:如果你想訪問一個人姓氏的列,但用戶將該列從第一個位置移動到表中的最後一個位置,那麼索引1不會再給我姓,對不對? – markjs

+0

什麼是桌面鼠標上移/鼠標下降的方法? –

0

使用下面的任何方法。被選中的tableView的委託調用。您可以從相關的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]); 

} 

來源:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableView_Class