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

Dan*_*iel 7 xcode cocoa selection multiple-select nstableview

我有一个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

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

ada*_*ulf 1

我终于能够通过设置selectionHighlightStyle行视图来覆盖蓝色选择颜色。我的子类中的以下代码NSTableRowView达到了目的:

- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle
{
    return NSTableViewSelectionHighlightStyleNone;
}

- (void)drawSelectionInRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}
Run Code Online (Sandbox Code Playgroud)