使用可编辑的列顺序获取NSTableView中的列

时间:2012-06-26 11:57:51

标签: macos cocoa cell nstableview nstablecolumn

我有一个NSTableView,如果用户点击了一列" ClickMe",我希望收到通知。我将整个表视图链接到一个可以提取clickedColumn:的方法,但我得到一个绝对数字,而不是对" ClickMe"的引用。列(可能已被移动到另一个地方)。

我当然可以编写自己的搜索算法来查看列X是否实际上是" Clickme"专栏,但那不会很优雅。有没有办法正确识别列,并以编程方式接收该ID?

3 个答案:

答案 0 :(得分:0)

查询NSTableView的columnAtPoint怎么样:在你的表中查看mouseDown:或mouseUp:method?

答案 1 :(得分:0)

我找到了一种以相当快的方式进行自己搜索的方法,但我仍然觉得我在这方面付出了太多的努力:

首先,将Interface Builder中所需列的标识符设置为“ClickMeColumn”。然后:

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

我正在寻找[tableView clickedColumnIdentifier]的内容。

答案 2 :(得分: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