我有一个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搜索找到任何解决方案或提示两天。也许这里有人有提示?
答案 0 :(得分:1)
我终于可以通过设置行视图的selectionHighlightStyle
来覆盖蓝色选择颜色。我的NSTableRowView
子类中的以下代码可以解决这个问题:
- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle
{
return NSTableViewSelectionHighlightStyleNone;
}
- (void)drawSelectionInRect:(NSRect)dirtyRect
{
[[NSColor redColor] set];
NSRectFill(dirtyRect);
}