NSTableView拖放选定的行将覆盖蓝色的行布局

时间:2014-11-08 09:33:26

标签: xcode cocoa selection nstableview multiple-select

我有一个NSTableView,可以在每一行显示一些图像和文本。我为NSTableView启用了多个选择。我为TableView启用了Drag& Drop来排序或导出图像。 现在,当我选择多行并将它们拖到TableView上时,整个行变为蓝色并保持蓝色(选中)。无法看到文字和图片。 在XCode中,我收到此消息:

  

调用后仍需要更新布局 - [NSTableRowView布局]。 NSTableRowView或其中一个超类可能在不调用super的情况下覆盖了--layout。或者,在更新它的过程中可能会出现脏的布局。两者都是Cocoa Autolayout中的编程错误。如果一些pre-Cocoa Autolayout类有一个名为layout的方法,那么很可能会出现前者,但应该修复它。

问题仅存在于多个选择中。启用单个选择时,它可以正常工作。

以下是展示问题的三张图片:

图2:拖动它时会变成蓝色;覆盖其他布局组件

http://ekiwi.de/temp/stackoverflow/original2.png

图3:拖动后,它保持完全蓝色

http://ekiwi.de/temp/stackoverflow/original3.png

到目前为止,我没有通过Google搜索找到任何解决方案或提示两天。也许这里有人有提示?

1 个答案:

答案 0 :(得分:1)

我终于可以通过设置行视图的selectionHighlightStyle来覆盖蓝色选择颜色。我的NSTableRowView子类中的以下代码可以解决这个问题:

- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle
{
    return NSTableViewSelectionHighlightStyleNone;
}

- (void)drawSelectionInRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}