2010-11-18 57 views
6

我在想如何摆脱Cocoa在NSTableView/NSOutlineView中右键单击时绘制的蓝色轮廓。NSTableView:右键单击行上的蓝色轮廓

NSTableView Outline http://tobidobi.com/nstableview_outline.png

它似乎并不成为一个经典的“亮点”,也不是“聚焦环”如果我没有记错的话 - 那么,是什么,其实?

我目前正在绘制自定义NSCells完全自己 - 但我想不出我自己如何可以
*得出这样的轮廓,也或
*摆脱它,或
*至少改变颜色

任何提示都非常欢迎!谢谢!

回答

12

不幸的是,我不知道有任何记录的方式来做到这一点,短缺写自己的表视图替换。

的方法重写为:

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

请把与苹果的增强请求,所以你将不必依靠无证方法做你将来想要什么。它看起来像另外两个表格视图突出显示方法是在10.6中定制的,但这不是。我一直认为它看起来有点笨拙,但有必要指出菜单所引用的行(不一定与突出显示的行相同)。

+0

这奏效了!谢谢你,尼古拉斯! – Tobidobi 2010-11-19 08:25:54

+0

类型参数错误!它不适用于64位。 – 2014-01-10 21:36:31

+0

谢谢,我没有在那里做64位可可。 – 2014-01-10 22:46:09

1

我NSTableView的* mainTableView不是子类,所以我摆脱它的上下文菜单打开之前:

- (void)menuWillOpen:(NSMenu *)menu{ 
    NSInteger rightClicked = [mainTableView clickedRow]; 
    [mainTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rightClicked] byExtendingSelection:NO]; 
    [mainTableView deselectRow: rightClicked]; 
    [mainTableView reloadData]; 
    { 
+0

reloadData是不必要的,但这是要走的路。 – 2017-08-07 12:38:12